打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
javascript里function之前加上感叹号 '''' ! '''' 会怎么样?

一般看JQuery插件里的写法是这样的

(function($) {           //...  })(jQuery);

今天看到bootstrap的javascript组件是这样写的

!function( $ ){  //...}( window.jQuery );

为什么要在前面加一个 " ! " 呢?


----------------------------------------------------------------------

我们都知道,函数的声明方式有这两种

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

楼主问题中出现的两个函数,都是匿名函数。通常,我们调用一个方法的方式就是 FunctionName()

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

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

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

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

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

这些有一篇非常详细的文章,推荐阅读:http://www.swordair.com/blog/2011/10/...

-----------------------------------------------------------------

就是为了能省略一个字符……

// 这么写会报错,因为这是一个函数定义:function() {}()// 常见的(多了一对括号),调用匿名函数:(function() {})()// 但在前面加上一个布尔运算符(只多了一个感叹号),就是表达式了,将执行后面的代码,也就合法实现调用!function() {}()
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
[从jQuery看JavaScript]-匿名函数与闭包(Anonymous Function and Closure)
jQuery技巧总结
JQuery技巧总结
Jquery常用技巧总结
深入理解javascript中的立即执行函数(function(){…})()
JavaScript 预解析的原理及实现 – 码农网
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服