深入浅析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 相关文章推荐
document.getElementById方法在Firefox与IE中的区别
May 18 Javascript
初窥JQuery-Jquery简介 入门了解篇
Nov 25 Javascript
当jQuery1.7遇上focus方法的问题
Jan 26 Javascript
借助JavaScript脚本判断浏览器Flash Player信息的方法
Jul 09 Javascript
JavaScript数据结构与算法之栈详解
Mar 12 Javascript
基于AngularJS+HTML+Groovy实现登录功能
Feb 17 Javascript
JavaScript中三种异步上传文件方式
Mar 06 Javascript
使用JS轻松实现ionic调用键盘搜索功能(超实用)
Sep 06 Javascript
angularJs 表格添加删除修改查询方法
Feb 27 Javascript
微信小程序事件对象中e.target和e.currentTarget的区别详解
May 08 Javascript
浅谈js数组splice删除某个元素爬坑
Oct 14 Javascript
vue 使用rules对表单字段进行校验的步骤
Dec 25 Vue.js
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
source.php查看源文件
2006/12/09 PHP
php读取EXCEL文件 php excelreader读取excel文件
2012/12/06 PHP
基于curl数据采集之单页面并行采集函数get_htmls的使用
2013/04/28 PHP
phpstorm配置Xdebug进行调试PHP教程
2014/12/01 PHP
php根据日期显示所在星座的方法
2015/07/13 PHP
深入浅析Yii admin的权限控制
2016/08/31 PHP
使用jquery实现简单的ajax
2013/07/08 Javascript
javascript中文本框中输入法切换的问题
2013/12/10 Javascript
React Router基础使用
2017/01/17 Javascript
React中使用async validator进行表单验证的实例代码
2018/08/17 Javascript
vue实现pdf导出解决生成canvas模糊等问题(推荐)
2018/10/18 Javascript
基于vue通用表单解决方案的思考与分析
2019/03/16 Javascript
微信小程序实现商城倒计时
2020/11/01 Javascript
python用pandas数据加载、存储与文件格式的实例
2018/12/07 Python
解决pycharm回车之后不能换行或不能缩进的问题
2019/01/16 Python
Ubuntu18.04中Python2.7与Python3.6环境切换
2019/06/14 Python
python利用wx实现界面按钮和按钮监听和字体改变的方法
2019/07/17 Python
Django app配置多个数据库代码实例
2019/12/17 Python
python实现实时视频流播放代码实例
2020/01/11 Python
python查询MySQL将数据写入Excel
2020/10/29 Python
html5指南-2.如何操作document metadata
2013/01/07 HTML / CSS
amazeui模态框弹出后立马消失并刷新页面
2020/08/19 HTML / CSS
找到不普通的东西:Bonanza
2016/10/20 全球购物
Dune London官网:英国著名奢华鞋履品牌
2017/11/30 全球购物
美国精油公司:Plant Therapy
2019/05/17 全球购物
Myholidays美国:在线旅游网站
2019/08/16 全球购物
美国折扣地毯销售网站:Rugs.com
2020/03/27 全球购物
string = null 和string = ''的区别
2013/04/28 面试题
学前教育学生自荐信范文
2013/12/31 职场文书
实习单位接收函
2014/01/11 职场文书
公司证明怎么写
2014/09/22 职场文书
大学生考试作弊检讨书1000字
2014/10/14 职场文书
党员群众路线教育实践活动学习笔记
2014/11/05 职场文书
班级元旦晚会开幕词
2015/01/29 职场文书
2015年派出所民警工作总结
2015/04/24 职场文书
法制教育观后感
2015/06/17 职场文书