深入浅析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 相关文章推荐
自动设置iframe大小的jQuery代码
Sep 11 Javascript
从jquery的过滤器.filter()方法想到的
Sep 29 Javascript
Jquery通过Ajax访问XML数据的小例子
Nov 18 Javascript
Javascript连接多个数组不用concat来解决
Mar 24 Javascript
Backbone.js框架中Model与Collection的使用实例
May 07 Javascript
JavaScript算法系列之快速排序(Quicksort)算法实例详解
Sep 04 Javascript
基于vuejs+webpack的日期选择插件
May 21 Javascript
webpack处理 css\less\sass 样式的方法
Aug 21 Javascript
vue的全局提示框组件实例代码
Feb 26 Javascript
Vue.js自定义事件的表单输入组件方法
Mar 08 Javascript
微信小程序实现星级评分和展示
Jul 05 Javascript
基于jquery实现九宫格拼图小游戏
Nov 30 jQuery
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+xslt在windows平台上
2006/10/09 PHP
用PHP和ACCESS写聊天室(五)
2006/10/09 PHP
使用PHP获取网络文件的实现代码
2010/01/01 PHP
php抓取https的内容的代码
2010/04/06 PHP
详解PHP内置访问资源的超时时间 time_out file_get_contents read_file
2013/06/03 PHP
PHP自带方法验证邮箱是否存在
2016/02/01 PHP
PHP使用imagick扩展实现合并图像的方法
2017/04/25 PHP
php中各种定义变量的方法小结
2017/10/18 PHP
js event事件的传递与冒泡处理
2009/12/06 Javascript
Javascript 函数中的参数使用分析
2010/03/27 Javascript
如何使用JS获取IE上传文件路径(IE7,8)
2013/07/08 Javascript
JavaScript prototype 使用介绍
2013/08/29 Javascript
jsp网页搜索结果中实现选中一行使其高亮
2014/02/17 Javascript
100个不能错过的实用JS自定义函数
2014/03/05 Javascript
jquery实现点击文字可编辑并修改保存至数据库
2014/04/15 Javascript
JavaScript访问CSS属性的几种方式介绍
2014/07/21 Javascript
jquery分割字符串的方法
2015/06/24 Javascript
属于你的jQuery提示框(Tip)插件
2016/01/20 Javascript
js获取html的span标签的值方法(超简单)
2016/07/26 Javascript
原生js实现倒计时--2018
2017/02/21 Javascript
关于Vue中axios的封装实例详解
2019/10/20 Javascript
浅析js实现网页截图的两种方式
2019/11/01 Javascript
python实现猜数字小游戏
2020/03/24 Python
使用python+whoosh实现全文检索
2019/12/09 Python
浅析Python中字符串的intern机制
2020/10/03 Python
Python实现微信表情包炸群功能
2021/01/28 Python
html5使用html2canvas实现浏览器截图的示例
2017/08/31 HTML / CSS
HTML5 直播疯狂点赞动画实现代码 附源码
2020/04/14 HTML / CSS
MYSQL基础面试题
2012/05/13 面试题
彩色的非洲教学反思
2014/02/18 职场文书
秋季校运动会广播稿
2014/02/23 职场文书
代领学位证书毕业证书委托书
2014/09/30 职场文书
单位工作证明书格式
2014/10/04 职场文书
教师师德承诺书2016
2016/03/25 职场文书
2020优秀员工演讲稿(三篇)
2019/10/17 职场文书
Java由浅入深通关抽象类与接口(下篇)
2022/04/26 Java/Android