2013-09-21 42 views
3

我確定這個東西是重複的,但我不知道要搜索什麼。Javascript:var = var = function

所以,我一直在尋找一個Node.JS應用程序,並發現這個代碼,並想知道它做了什麼。我試過搜索,但我不知道要搜索什麼,所以我希望有人會向我解釋。

init = refresh = function() { 
    // code here.. 
}; 

我明白1等於,但爲什麼是2?它是否會生成某種別名,以便函數可以在initrefresh之間運行?

+0

變量賦值是這樣的,是的。 ('a = b'將'a'設置爲'b'並評估爲'b';它從右到左解決。) – Ryan

+0

基本上它將'function(){...}'分配給'init'和'刷新'。 –

回答

4

=解決右手邊,然後將結果分配到左手邊。

這樣做的結果與分配的結果相同。

這樣分配的功能,既initrefresh

+0

謝謝你,我只是在閱讀代碼(因爲它是我的一種新語言),這對我來說是新鮮事物。 –

4

昆汀做了很好的工作,告訴你它在做什麼。 我只是想插話來舉個例子,你可以使用此:

例如說你有一個對象:

var obj = { 
    init: function() { 
     var x = this.x = [1,2,3]; 
    } 
}; 

這是什麼讓你做的是引用您的變量x兩種不同的方式(通過x或this.x)。

現在你爲什麼要這樣做? 那麼兩個主要原因。

  1. 這是更快進入X,而不是this.x(但你仍然需要在其它地方訪問它)
  2. 具有讀/寫X很多次功能於一體,可以產生更容易閱讀的代碼。

這是你使用它的另一個原因。

但在大多數情況下,它只是別名,如:的forEach - >每個

1

下面是使用運營商關聯優先的解釋。

所以,看着來自Mozilla的,當一個表達式包含相同的優先級的多個運營商,一個 operator precedence描述爲

a OP b OP c 

,那麼你檢查優先這一水平是否使用從右到左從左到右相關性。

a = b = c 

JavaScript中的賦值運算符是其優先級別上唯一的運算符。

從右到左關聯

所以在a = b = cb = c首先評估的c的值賦給b

然後表達式變成a = b

相關問題