2012-04-15 77 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可能会在多个地方使用,并且会始终引用正确的对象。
相关问题