深入浅析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 相关文章推荐
JavaScript通过RegExp实现客户端验证处理程序
May 07 Javascript
JS字符串处理实例代码
Aug 05 Javascript
node.js中实现同步操作的3种实现方法
Dec 05 Javascript
jquery不常用方法汇总
Jul 26 Javascript
php利用curl获取远程图片实现方法
Oct 26 Javascript
从零学习node.js之模块规范(一)
Feb 21 Javascript
如何用input标签和jquery实现多图片的上传和回显功能
May 16 jQuery
详解50行代码,Node爬虫练手项目
Apr 22 Javascript
axios实现文件上传并获取进度
Mar 25 Javascript
使用Angular9和TypeScript开发RPG游戏的方法
Mar 25 Javascript
ElementUI 修改默认样式的几种办法(小结)
Jul 29 Javascript
图解JS原型和原型链实现原理
Sep 15 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实现信用卡校验位算法THE LUHN MOD-10示例
2014/05/07 PHP
php判断GIF图片是否为动画的方法
2020/09/04 PHP
PHP CURL 内存泄露问题解决方法
2015/02/12 PHP
php实现微信扫码支付
2017/03/26 PHP
PHP基于IMAP收取邮件的方法示例
2017/08/07 PHP
Laravel中七个非常有用但很少人知道的Carbon方法
2017/09/21 PHP
详解将数据从Laravel传送到vue的四种方式
2019/10/16 PHP
JQuery 插件制作实践 xMarquee插件V1.0
2010/04/02 Javascript
jQuery回车实现登录简单实现
2013/08/20 Javascript
jquery easyui combobox模糊过滤(示例代码)
2013/11/30 Javascript
javascript判断css3动画结束 css3动画结束的回调函数
2015/03/10 Javascript
详解JavaScript ES6中的模板字符串
2015/07/28 Javascript
javascript:void(0)是什么意思及href=#与href=javascriptvoid(0)的区别
2015/11/13 Javascript
简单实现的JQuery文本框水印插件
2016/06/14 Javascript
脚手架vue-cli工程webpack的作用和特点
2018/09/29 Javascript
[40:27]完美世界DOTA2联赛PWL S3 PXG vs GXR 第一场 12.19
2020/12/24 DOTA
Python简单读取json文件功能示例
2017/11/30 Python
用Python+OpenCV对比图像质量的几种方法
2019/07/15 Python
python 实现将Numpy数组保存为图像
2020/01/09 Python
解决pycharm下pyuic工具使用的问题
2020/04/08 Python
HTML5 微格式和相关的属性名称
2010/02/10 HTML / CSS
孕妇装中的著名品牌:Isabella Oliver(伊莎贝拉·奥利弗)
2016/10/31 全球购物
英国打印机墨水和碳粉商店:Printerinks
2017/06/30 全球购物
上海雨人软件技术开发有限公司测试题
2015/07/14 面试题
材料物理专业个人求职信
2013/12/15 职场文书
安全检查与奖惩制度
2014/01/23 职场文书
电力公司个人求职信范文
2014/02/04 职场文书
工作决心书范文
2014/03/11 职场文书
我爱读书演讲稿
2014/05/07 职场文书
销售辞职信范文
2015/03/02 职场文书
村官2015年度工作总结
2015/10/14 职场文书
使用PDF.js渲染canvas实现预览pdf的效果示例
2021/04/17 Javascript
SQL模糊查询报:ORA-00909:参数个数无效问题的解决
2021/06/21 Oracle
交互式可视化js库gojs使用介绍及技巧
2022/02/18 Javascript
MySQL数据库简介与基本操作
2022/05/30 MySQL
前端框架ECharts dataset对数据可视化的高级管理
2022/12/24 Javascript