function与感叹号

自闭症网瘾萝莉.ら 提交于 2020-02-29 16:39:52
!function( $ ){
  //...
}( window.jQuery );
其实是执行函数的意思,等同于
(function($) {         
  //...  
})(jQuery);
不过它们的执行效率有所差距,声明函数我们有以下两种方式:

function fnA(){alert('msg');}//声明式定义函数
var fnB = function(){alert('msg');}//函数赋值表达式定义函数
fnA();  //弹出'msg'
fnB();  //弹出'msg'

通常,我们调用一个方法的方式就是 FunctionName()

但是,如果我们尝试为一个“定义函数”末尾加上(),解析器是无法理解的。

function msg(){
  alert('message');
}();//解析器是无法理解的


定义函数的调用方式应该是 msg() ; 那为什么将函数体部分用()包裹起来就可以了呢?

原来,使用括号包裹定义函数体,解析器将会以函数表达式的方式去调用定义函数。也就是说,任何能将函数变成一个函数表达式的作法,都可以使解析器正确的调用定义函数。而 ! 就是其中一个,而 + - || 都有这样的功能。

另外,用 ! 可能更多的是一个习惯问题,不同的运算符,性能是不同的。

参考:http://swordair.com/function-and-exclamation-mark/ 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!