3 个回答

相当于 (function($) {...})($),意思就是把当前这个闭包立即执行。注意这个函数末尾有 ($),千万不要以为函数前面加个 + 就会执行。

如果不写 + 直接写 function() {...}(),这会造成 js 语法错误,这是因为 function() {...}函数声明,它不是表达式,它必须有一个名字。但就算有了名字,它也不会返回函数,在后面加 () 并不会变成函数调用,而是变成简单的括号表达式。

而前面写了个 + 之后 +function() {...}() 变成一个表达式,末尾的 () 由于运算优先级高会先执行,于是就把刚定义的函数执行了一遍。

现在流行这样写大概是因为比加括号的写法少一个字符吧,如果有其他深意请指正。

@huandu 说的很对,任何一个一元运算符都能达到这样的效果,如-, ~, ++, --,你可以试试typeof也行

不仅一元运算符可以

var a = function(arg){
    console.log(arg);
    } ("nmsl");

也可以

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题