bootstrap源码里的function加上了+号
2016-06-05 00:15
645 查看
一般看JQuery插件里的写法是这样的
今天看到bootstrap的javascript组件是这样写的
为什么要在前面加一个 " ! " 呢?我们都知道,函数的声明方式有这两种
楼主问题中出现的两个函数,都是匿名函数。通常,我们调用一个方法的方式就是 FunctionName()但是,如果我们尝试为一个“定义函数”末尾加上(),解析器是无法理解的。
定义函数的调用方式应该是 msg() ; 那为什么将函数体部分用()包裹起来就可以了呢?原来,使用括号包裹定义函数体,解析器将会以函数表达式的方式去调用定义函数。也就是说,任何能将函数变成一个函数表达式的作法,都可以使解析器正确的调用定义函数。而 ! 就是其中一个,而 + - || 都有这样的功能。另外,用 ! 可能更多的是一个习惯问题,不同的运算符,性能是不同的。就是为了能省略一个字符……
(function($) { //... })(jQuery);
今天看到bootstrap的javascript组件是这样写的
!function( $ ){ //... }( window.jQuery );
为什么要在前面加一个 " ! " 呢?我们都知道,函数的声明方式有这两种
function fnA(){alert('msg');}//声明式定义函数 var fnB = function(){alert('msg');}//函数赋值表达式定义函数
楼主问题中出现的两个函数,都是匿名函数。通常,我们调用一个方法的方式就是 FunctionName()但是,如果我们尝试为一个“定义函数”末尾加上(),解析器是无法理解的。
function msg(){ alert('message'); }();//解析器是无法理解的
定义函数的调用方式应该是 msg() ; 那为什么将函数体部分用()包裹起来就可以了呢?原来,使用括号包裹定义函数体,解析器将会以函数表达式的方式去调用定义函数。也就是说,任何能将函数变成一个函数表达式的作法,都可以使解析器正确的调用定义函数。而 ! 就是其中一个,而 + - || 都有这样的功能。另外,用 ! 可能更多的是一个习惯问题,不同的运算符,性能是不同的。就是为了能省略一个字符……
// 这么写会报错,因为这是一个函数定义: function() {}() // 常见的(多了一对括号),调用匿名函数: (function() {})() // 但在前面加上一个布尔运算符(只多了一个感叹号),就是表达式了,将执行后面的代码,也就合法实现调用 !function() {}()
相关文章推荐
- java框架整合Springmvc+mybatis+shiro+bootstrap
- JavaEE框架Bootstrap、HTML5、jQuery、SpringMVC
- Bootstrap框架基础
- 基于Bootstrap使用jQuery实现输入框组input-group的添加与删除-改进版
- 2016 系统设计第一期 (档案一)MVC bootstrap model弹出子页面
- 让IE6 IE7 IE8 IE9 IE10 IE11支持Bootstrap的解决方法
- springmvc+bootstrap风格的树形地区
- bootstrap modal 弹出效果
- html-demo: JQuery&Bootstrap
- Bootstrap按钮样式、状态
- bootstrap资源
- Bootstrap
- 解决bootstrap的兼容性问题
- Bootstrap- Modal对话框如何在关闭时触发事件
- bootstrap学习总结-css样式设计(二)
- bootstrap的carousel-indicators是怎么实现垂直居中的
- Html 5/CSS 的学习(二) —— Bootstrap 导航栏
- bootstrap modal使用感悟
- bootstrap-select 单选、多选设置
- ExtDeprecationWarning: Importing flask.ext.bootstrap is deprecated, use flask_bootstrap instead.