2012-10-19 55 views
0
// a self-invoking anonymous function 
(function() {})(); 

是否与以下内容相同?.call()自调用匿名函数,

// as in underscore.js (underscorejs.org) 
(function() {}).call(this); 
+0

他们不是,但这一切都取决于你是否在函数内引用'this'。 –

回答

3

不,第二个会将函数的调用上下文设置为与外部上下文相同的值。

第一个可能有也可能不具有相同的上下文,具体取决于此代码的运行位置以及代码是否以严格模式运行。

+0

严格模式会有什么不同?只是想知道 – Ian

+1

@ianpgall:当你严格的时候,函数的默认'this'值是'undefined'而不是'window'。另外,如果你为'this'设置一个原始值,它不会将它转换为它的对象包装器。 –