博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bootstrap源码里的function加上了+号
阅读量:6848 次
发布时间:2019-06-26

本文共 748 字,大约阅读时间需要 2 分钟。

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

(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() {}()
 

转载地址:http://ndrul.baihongyu.com/

你可能感兴趣的文章
常用SQL语句
查看>>
Linux网络编程必看书籍推荐
查看>>
GitHub在windows上代码管理教程
查看>>
Android 异步处理
查看>>
Magento安装错误:PHP extension ‘mcrypt’ ‘curl’ must be loaded.
查看>>
转:linux/unix命令行终端的光标及字符控制快捷键
查看>>
Yahoo为啥赚不到钱
查看>>
搞笑的金山软件
查看>>
Windows Server 8 Beta 初体验之一:安装篇(无技术含量,安装过的人可以略过)
查看>>
《Linux设备驱动开发详解》第3版现隆重征求读者创作意见
查看>>
Skype for Business Server 2015-12-WAP-发布-2-邮件服务器
查看>>
linux下文件删除的原理精华讲解(考试题答案系列)
查看>>
《网管员世界》记者走基层采访实录
查看>>
VC客户端无法登陆都是REDO日志惹的祸
查看>>
VMware Workstation 12-虚拟机-批量创建-快照-批量创建恢复
查看>>
2013年下半年系统集成项目管理工程师考试试卷(回忆版)
查看>>
reviewboard安装实战
查看>>
Access模糊查询
查看>>
【LoadRunner技术讲座7】使用windows socket协议
查看>>
Docker 社区和企业版出现了
查看>>