2012-04-15 117 views
2

在的the source code for underscore.js開始時,你會看到這一點:你爲什麼要把它分配給另一個變量?

var root = this; 

var previousUnderscore = root._; 

於是問題就來了爲什麼不作者只寫:

var previousUnderscore = this._; 
+2

因爲他在代碼 – Habib 2012-04-15 15:49:36

+1

中分別使用root和previousUnderscore因爲執行上下文(= this關鍵字的值)在嵌套函數中不可用(因爲它們有自己的執行上下文)。因此,如果你想從這些嵌套函數中訪問它,你必須將它「保存」在一個變量中。 – 2012-04-15 15:52:26

+0

我喜歡Sime Vidas的回答最好,但我不能接受它,因爲它是作爲評論提供的。 – 2012-04-16 06:11:44

回答

1

兩個原因,

  1. 可讀性,它使它更清楚代碼正在做什麼,它所引用的是什麼。這是非常不透明的。
  2. 根據上下文的不同,這可以指很多很多很多不同的對象,root可能會在多個地方使用,並且會始終引用正確的對象。
相關問題