2011-12-19 23 views
2

代码示例是here什么是新函数(设置){...}(jQuery.query || {});意味着在JavaScript?

大码块与

new function(settings) { 

开始,以

}(jQuery.query || {}); // Pass in jQuery.query as settings object 

结束这是什么把戏呢?

为什么Eclipse的在这里找到2个错误? Eclipse在开始时不喜欢新的。我可以把它删除吗?另外Eclipse希望]在“结束NewExpression”。

这是什么意思?如何用[]写这个?

+0

的可能重复的['新功能()'与在JavaScript小写字母 “f”](http://stackoverflow.com/questions/2274695/new-function-with-lower-case-f-in-javascript ) – 2011-12-19 12:07:51

回答

3

这是创建一个自调用javascript函数的一种方式。这只是一个功能,可以通过手腕的一次快速轻弹进行声明和调用。

http://sparecycles.wordpress.com/2008/06/29/advanced-javascript/

什么Eclipse的抱怨是不是真的清楚。该语法是完全有效的 - 可能只是Eclipse无法正确处理它。

编辑:传递的参数:(jQuery.query || {})传递jQuery.query给该函数。如果jQuery.query为null,false,零或未定义(falsey),则会传递一个空的对象字面值,而不是空引用。

+0

是不是可以通过在Javascript中直接写入它来调用代码? – Dims 2011-12-19 12:22:02

+0

我的意思是如果我可以写'新函数(x){alert(x);}(“foo”);'那么我不能只写'alert(“foo”);'? – Dims 2011-12-19 12:23:22

+2

@Dims - 将代码放入立即执行的函数中的优点是,您创建的任何工作变量将在该函数中具有局部范围(并且在函数完成时会消失),而不是添加到全局范围中,因此您可以保留代码块自包含。由于警报不会产生任何副作用,因此您不会仅仅提醒警报。 (在某些情况下有一些比较模糊的优点,但我不会在这里解释它们。) – nnnnnn 2011-12-19 12:37:35

4

这产生一个匿名功能并且与

(jQuery.query || {}) 

作为参数调用它。

尝试

new function(x){alert(x);}("foo"); 

的萤火虫。

+0

但什么是jQuery.query?这应该定义在别的地方吗? – Dims 2011-12-19 12:17:53

+0

我的意思是jQuery.query也在正文中使用。这是否意味着什么? – Dims 2011-12-19 12:21:12

1

new function建设定义一个新的功能。它适用于主流浏览器,但最好使用稍微不同的语法。

(function() { 
    ... 
})(); 

这里我们定义一个函数,然后立即调用它。在你的代码中,函数也传递了一个参数。

Eclipse的抱怨可能是一个错误。