JavaScript自调用函数



可能重复:
(function(({}(((之间的差异;和函数(({}((
在JavaScript中,"(function(({}((("one_answers"(function(({}((("在功能上相等吗?

我只是想知道这两个例子之间(关于功能(是否有区别:

第一个

(function foo() {
console.log("bar")
})()

第二个

(function foo() {
console.log("bar")
}())

两者似乎都很好。。。

谢谢!

没有区别。事实上,您需要使用()只是因为简单。。。

function() { console.log('bar'); } ();

JS解析器无法正确识别。正如ES5标准中所说:

此外,ExpressionStatement不能以function关键字开头因为这可能会使它与FunctionDeclaration不明确。

(...)的另一种解决方案是用一些一元运算符扩充这个语句。二者都

+function() { console.log('bar'); } ();

!function() { console.log('bar'); } ();

将起作用。

它们完全相同。两者在效率、产量或使用方面没有任何区别。使用任何一种都是一个偏好问题。

尽管JS minfiers常用的两种形式有一个较短的变体。也就是说,对函数表达式进行逻辑NOT处理并调用它:

!function() {
    console.log( x );
}();​

它们之间没有区别。两者都是立即调用的函数表达式。像道格拉斯·克罗克福德这样的人更喜欢第二种方法。有些人更喜欢第一种。有趣的是,Crockford的JSLint不允许使用第一种方法,所以我认为第二种方法更常见。

哦,如果你使用函数声明而不是函数表达式,那么你可以在函数出现在程序中之前调用它。这是因为声明是在JavaScript:中挂起的

greet(); // This will work
function greet() {
    alert("Merry Christmas!");
}

对于函数表达式,情况并非如此:

greet(); // This will not work
var greet = function greet() {
    alert("Merry Christmas!");
};

这几乎就是你现在需要知道的全部。

相关内容

  • 没有找到相关文章

最新更新