我看到一些代码似乎使用了一个我无法识别的运算符,以两个感叹号的形式出现,如下所示:!!.有人可以告诉我这个运营商的作用吗?
我看到这个的背景是,
this.vertical = vertical !== undefined ? !!vertical : this.vertical;
Run Code Online (Sandbox Code Playgroud) !function () {}();
Run Code Online (Sandbox Code Playgroud) 在javascript中,你想什么时候使用它:
(function(){
//Bunch of code...
})();
Run Code Online (Sandbox Code Playgroud)
对此:
//Bunch of code...
Run Code Online (Sandbox Code Playgroud) 我现在已经在一些库上看到了这种语法,我想知道它的好处是什么.(注意我很清楚闭包和代码在做什么,我只关心语法差异)
!function(){
// do stuff
}();
Run Code Online (Sandbox Code Playgroud)
作为更常见的替代品
(function(){
// do stuff
})();
Run Code Online (Sandbox Code Playgroud)
用于自我调用匿名函数.
我想知道一些事情.首先,允许顶级示例实际工作的是什么?为了使这个陈述在语法上正确,为什么必要的爆炸?我也被告知+有效,我相信其他一些代替!
第二,有什么好处?我所能说的只是它节省了一个角色,但我无法想象吸引众多采用者会带来如此巨大的好处.我还缺少其他一些好处吗?
我可以看到的唯一其他差异是自调用函数的返回值,但在这两个示例中,我们并不真正关心函数的返回值,因为它仅用于创建闭包.那么有人可以告诉我为什么人们可能会使用第一种语法吗?
加载脚本时,我收到此错误:
TypeError:'undefined'不是函数(评估'$(document)')
我不知道是什么导致了它或它甚至意味着什么.
在萤火虫中,我得到了这个:
$不是一个功能
当我遇到调用匿名函数的奇怪方式时,我正在阅读Twitter上的JS源代码 - 在改进我的JS知识库的过程中:
!function( $ ) {
...
}( window.jQuery );
Run Code Online (Sandbox Code Playgroud)
......这有效!:)
对每个人来说,显而易见的是:
function ( $ ) { ... } ( window.jQuery )
Run Code Online (Sandbox Code Playgroud)
不起作用(语法错误),而这一个是正确的:
(function ( $ ) { .... })( window.jQuery )
Run Code Online (Sandbox Code Playgroud)
任何人都可以解释这个魔术(为什么案例与!function作品)?