簡體   English   中英

格式化javascript函數的正確方法

[英]correct way to format a javascript function

快一點......

什么是格式化javascript函數的正確方法?

我這樣看:

function doThis(){
}

和這樣:

doThis = function(){
}

或許它沒有任何區別。 請讓我知道什么是最好的,或者他們都有不同的rasons或目的。

干杯

C

它們是兩個不同的東西,雖然它們都創建了一個函數(並將其賦值給變量)。

function name () {
}

函數語句 (或“函數聲明”)。 它是唯一合法的出現為頂級腳本元素或直接作為函數的元素:即,它是不合法的函數聲明內部的出現if ,或while ,等所有功能聲明“提升“到函數(或腳本)的頂部,因此以下是有效的:

a()
function a () { alert("a") }

形式如下:

variable = function name () {} // or variable = function () {}

function關鍵字位於函數表達式上下文中:它創建一個新的函數對象,並將得到的函數對象(只是一個“正常值”)賦給variable 以下內容無效,因為函數表達式未被提升。

var b
b() // oops, does not evaluate to a function-object yet!
b = function b () { alert("b") }

所有這一切,“正確的方法”是使用函數聲明(“函數聲明”)形式,除非有理由不這樣做。

快樂的編碼。


也可以看看:

這些語法之間存在重要且有用的區別。

封裝

在OOP中,使用封裝非常有用,封裝是一種限制對其他對象的訪問的機制。 javascript中公共和私有變量/函數之間的區別可以這樣說:

function Color(value)
{
    // public variable
    this.value = value; // get from arguments

    // private variable
    var _name = "test";

   // public function
   this.getRandomColor = function( )
   {
     return Math.random() * 0xFFFFFF;
   }

   // private function
   function getNiceColor()
   {
     return 0xffcc00;
   }
}

公共測試

可以訪問顏色實例中的公共變量和函數:

// create instance of Color
var color = new Color(0xFF0000);
alert( color.value ); // returns red color
alert( color.getRandomColor() ); // returns random color

測試私有

無法從color-instance訪問私有變量和函數:

var color = new Color(0x0000FF); 
alert( color.getNiceColor() ); // error in console; property does not exist, because function is private.
alert( color._name ); // error in console; property does not exist, because variable is private.

注意
在使用公共函數時使用好的原型可能會更好,因為這種編碼方法可能會導致繼承問題。

查看[1]中的前10-15張幻燈片,他們談論這個

[1] http://ejohn.org/apps/learn/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM