深入浅析JavaScript函数前面的加号和叹号


Posted in Javascript onJuly 09, 2016
+function(){}();

这里的加号,也可以替换成!,~等其他一元操作符,其效果相当于:

(function() { console.log("Foo!"); })(); 
// or 
(function() { console.log("Foo!"); }());

如果没有这个加号的话,解析器会认为function是一个函数声明的开始,而后面()将会导致语法错误。在function前面加上+号时,就变成了一个函数表达式,而函数表达式后面又添加了一个()就变成了一个立即执行的函数了。

下面看下js函数前面感叹号的作用:

一、JS函数声明形式

function fnA(){alert('msg');} //声明式定义函数

二、JS函数表达式形式

var func = function(agr1,arg2){ //创建匿名函数
alert(arg1 + ' ' + arg2);
}

三、JS匿名函数声明完立即执行的常见格式

(function() { /* code */ })();

说明

1、包围函数(function(){})的第一对括号向脚本返回未命名的函数,随后一对空括号立即执行返回的未命名函数,括号内为匿名函数的参数。

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

3、该函数的作用主要为 匿名 和 自动执行

Javascript 相关文章推荐
IE中直接运行显示当前网页中的图片 推荐
Aug 31 Javascript
JavaScript中setAttribute用法介绍
Jul 20 Javascript
js select option对象小结
Dec 20 Javascript
特殊情况下如何获取span里面的值
May 20 Javascript
JS动态改变表格边框宽度的方法
Mar 31 Javascript
js实现简单秒表走动的时钟特效
Mar 25 Javascript
bootstrap弹出层的多种触发方式
May 10 Javascript
echarts实现词云自定义形状的示例代码
Feb 20 Javascript
Vue源码学习之关于对Array的数据侦听实现
Apr 23 Javascript
vue2.0项目集成Cesium的实现方法
Jul 30 Javascript
vue实现手机号码的校验实例代码(防抖函数的应用场景)
Sep 05 Javascript
JavaScript实现网页下拉菜单效果
Nov 20 Javascript
jQuery回到顶部的代码
Jul 09 #Javascript
jQuery 跨域访问解决原理案例详解
Jul 09 #Javascript
JavaScript跨域调用基于JSON的RESTful API
Jul 09 #Javascript
checkbox 选中一个另一个checkbox也会选中的实现代码
Jul 09 #Javascript
jquery+ajax+text文本框实现智能提示完整实例
Jul 09 #Javascript
jQuery实现的纵向下拉菜单实例详解【附demo源码下载】
Jul 09 #Javascript
EasyUI Pagination 分页的两种做法小结
Jul 09 #Javascript
You might like
PHP CURL获取cookies模拟登录的方法
2013/11/04 PHP
yii2利用自带UploadedFile实现上传图片的示例
2017/02/16 PHP
php实现保存周期为1天的购物车类
2017/07/07 PHP
thinkphp框架类库扩展操作示例
2019/11/26 PHP
javascript 动态数据下的锚点错位问题解决方法
2008/12/24 Javascript
innerHTML 和 getElementsByName 在IE下面的bug 的解决
2010/04/09 Javascript
JavaScript中的一些定位属性[图解]
2010/07/14 Javascript
jquery淡化版banner异步图片文字效果切换图片特效
2014/04/08 Javascript
js实现class样式的修改、添加及删除的方法
2015/01/20 Javascript
js获取字符串字节数方法小结
2015/06/09 Javascript
浅谈Javascript实现继承的方法
2015/07/06 Javascript
javascript随机抽取0-100之间不重复的10个数
2016/02/25 Javascript
JS面向对象(3)之Object类,静态属性,闭包,私有属性, call和apply的使用,继承的三种实现方法
2016/02/25 Javascript
javascript求日期差的方法
2016/03/02 Javascript
纯js实现瀑布流布局及ajax动态新增数据
2016/04/07 Javascript
ionic2 tabs使用 Modal底部tab弹出框
2016/12/30 Javascript
深究AngularJS如何获取input的焦点(自定义指令)
2017/06/12 Javascript
react native带索引的城市列表组件的实例代码
2017/08/08 Javascript
微信小程序 页面滑动事件的实例详解
2017/10/12 Javascript
Javascript中的作用域及块级作用域
2017/12/08 Javascript
在vue中使用setInterval的方法示例
2019/04/16 Javascript
微信小程序动态显示项目倒计时
2019/06/20 Javascript
python实现定时同步本机与北京时间的方法
2015/03/24 Python
python和ruby,我选谁?
2017/09/13 Python
用Python删除本地目录下某一时间点之前创建的所有文件的实例
2017/12/14 Python
Python实现的读取电脑硬件信息功能示例
2018/05/30 Python
Python中交换两个元素的实现方法
2018/06/29 Python
Python用5行代码实现批量抠图的示例代码
2020/04/14 Python
Python私有属性私有方法应用实例解析
2020/09/15 Python
Python特殊属性property原理及使用方法解析
2020/10/09 Python
会计学个人自荐信模板
2013/12/13 职场文书
交通事故检查书范文
2014/01/30 职场文书
生物制药专业自我鉴定
2014/02/19 职场文书
学习朴航瑛老师爱岗敬业先进事迹思想汇报
2014/09/17 职场文书
2015社区健康教育工作总结
2015/05/20 职场文书
正则表达式基础与常用验证表达式
2022/06/16 Javascript