我在简单、伟大、美妙和强大的库knockoutjs中找到了这个语法:
!function(factory) { ... }
声明前的非符号 ( !
)是什么意思function
?
更新:源代码不再包含这个确切的语法。
我在简单、伟大、美妙和强大的库knockoutjs中找到了这个语法:
!function(factory) { ... }
声明前的非符号 ( !
)是什么意思function
?
更新:源代码不再包含这个确切的语法。
运算符的!
行为正常,否定表达式。在这种情况下,它用于强制函数是函数表达式而不是函数语句。由于!
运算符必须应用于表达式(将其应用于语句没有意义,因为语句没有值),因此函数将被解释为表达式。
这样就可以立即执行。
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");
})();