How exactly does !function(){}() work?
本问题已经有最佳答案,请猛点这里访问。
我见过:
1 | !function(){ //code }(); |
在多个地方用于立即执行匿名函数。通常,它被用来代替:
1 | (function(){ //code }()) |
有人知道
这是什么!做
当使用
这将强制将函数作为表达式进行计算,从而允许立即以内联方式调用它。
其他替代方案
你可以用任何接线员来做这个。以下是一些例子…
1 2 3 4 5 | 'invoke',function(){ /*code*/ }(); 1+function(){ /*code*/ }(); void function(){ /*code*/ }(); ~function(){ /*code*/ }(); +function(){ /*code*/ }(); |
其中一些好处是,运算符的含义没有过载。
在函数周围使用
1 2 3 4 5 6 7 8 9 10 | (function() { alert('first'); }()) (function() { alert('second'); }()) // TypeError: undefined is not a function |
这将导致一个
使用不同的运算符如何处理(或避免)问题
即使是像
如果你这样做…
1 2 3 4 5 6 7 | +function() { alert('first'); }() +function() { alert('second'); }() |
第一个
第二个
结果当然是
演示操作员如何与函数交互
为了证明这一点,只需给每个函数一个返回值,然后将其粘贴到控制台中…
1 2 3 4 5 6 7 8 9 10 11 | +function() { alert('first'); return"10"; }() +function() { alert('second'); return 20; }() // 30 |
您将得到两个