语法是什么!function(){...}是什么意思?

时间:2012-11-25 08:01:51

标签: javascript

我在简单,优秀,精彩且功能强大的库knockoutjs中找到了这种语法:

!function(factory) { ... }

!声明之前的未签名(function)的含义是什么?

更新:源代码不再包含这种确切的语法。

1 个答案:

答案 0 :(得分:9)

!运算符表现正常,否定表达式。在这种情况下,它用于强制函数为函数表达式而不是函数语句。由于!运算符必须应用于表达式(将它应用于语句没有意义,因为语句没有值),该函数将被解释为表达式。

这样就可以立即执行。

function(){
    alert("foo");
}(); // error since this function is a statement, 
     // it doesn't return a function to execute

!function(){
    alert("foo");
}(); // This works, because we are executing the result of the expression
// We then negate the result. It is equivalent to:

!(function(){
    alert("foo");
}());

// A more popular way to achieve the same result is:
(function(){
    alert("foo");
})();