比如
(function(){
console.log(1);
})()
这里把function包起来的()的用处和原理,和最后的()运行上一个函数,他的原理是什么,为什么会运行上一个函数表达式。还有
+function(){
console.log(2); //同时返回NaN
}()
-function(){
console.log(3); //同时返回NaN
}()
!function(){
console.log(4); //返回true
}()
为什么会返回NaN和true?
为什么只有+-!可以运行,其他的却不行,会报错?
有没有其他办法来运行匿名函数,不用下面的方式,也就是在最后不使用()
(function{...}())()
+function(){...}()
-function(){...}()
来运行匿名函数的方法
后面() 表示执行这个函数。
这是一个函数声明,不能直接执行,js 无法解析。
function前使用~ ! - +的目的是为了消除函数声明和函数表达式间歧义。
也就是说 function(){ /* code */ } 这是一个函数声明,如果直接在函数声明后使用 "()" 来调用, js 解析器无法解析,会提示:SyntaxError: unexpected_token 错误。
关于这个可以参考文章:http://swordair.com/function-and-exclamation-mark/
返回值的问题。
你例子等价上述。function return 结果为 undefined,undefined隐式转化为数字,结果为NaN, 所以 +undefined 的结果为NaN,- 等同。!是逻辑操作符,所以undefined隐式转化boolean,结果为false,所以!undefined 的结果就为true