Javascript中匿名函数的调用与写法实例详解(多种)


Posted in Javascript onJanuary 26, 2016

Javascript中定义函数的方式有多种,函数直接量就是其中一种。如var fun = function(){},这里function如果不赋值给fun那么它就是一个匿名函数。好,看看匿名函数的如何被调用。

方式1,调用函数,得到返回值。强制运算符使函数调用执行

(function(x,y){
alert(x+y);
return x+y;
}(3,4));

方式2,调用函数,得到返回值。强制函数直接量执行再返回一个引用,引用再去调用执行

(function(x,y){
alert(x+y);
return x+y;
})(3,4);

这种方式也是很多库爱用的调用方式,如jQuery,Mootools。

方式3,使用void

void function(x) {
x = x-1;
alert(x);
}(9);

方式4,使用-/+运算符

-function(x,y){
alert(x+y);
return x+y;
}(3,4);
+function(x,y){
alert(x+y);
return x+y;
}(3,4);
--function(x,y){
alert(x+y);
return x+y;
}(3,4);
++function(x,y){
alert(x+y);
return x+y;
}(3,4);

方式5,使用波浪符(~)

~function(x, y) {
alert(x+y);
return x+y;
}(3, 4);

方式6,匿名函数执行放在中括号内

[function(){
console.log(this) // 浏览器得控制台输出window
}(this)]

方式7,匿名函数前加typeof

typeof function(){
console.log(this) // 浏览器得控制台输出window
}(this)

方式8,匿名函数前加delete

delete function(){
console.log(this) // 浏览器得控制台输出window
}(this)

方式9,匿名函数前加void

void function(){
console.log(this) // 浏览器得控制台输出window
}(this)

方式10,使用new方式,传参

new function(win){
console.log(win) // window
}(this)

方式11,使用new,不传参

new function(){
console.log(this) // 这里的this就不是window了
}

方式12,逗号运算符

function(){
console.log(this) // window
}();

方式13,按位异或运算符

^function(){
console.log(this) // window
}();

方式14,比较运算符

function(){
console.log(this) // window
}();

最后看看错误的调用方式

function(x,y){
alert(x+y);
return x+y;
}(3,4);

匿名函数的N种写法如下所示

匿名函数没有实际名字,也没有指针,怎么执行?

关于匿名函数写法,很发散~

+号是让函数声明转换为函数表达式。汇总一下

最常见的用法:

代码如下:

(function() { 
alert('water'); 
})();

当然也可以带参数:

代码如下:

(function(o) { 
alert(o); 
})('water');

想用匿名函数的链式调用?很简单:

代码如下:

(function(o) { 
console.log(o); 
return arguments.callee; 
})('water')('down');

常见的匿名函数都知道了,看看不常见的:

代码如下:

~(function(){ 
alert('water'); 
})();//写法有点酷~

代码如下:

void function(){ 
alert('water'); 
}();//据说效率最高~

代码如下:

+function(){ 
alert('water'); 
}();

代码如下:

-function(){ 
alert('water'); 
}();

代码如下:

~function(){ 
alert('water'); 
}();

代码如下:

!function(){ 
alert('water'); 
}();

代码如下:

(function(){ 
alert('water'); 
}());//有点强制执行的味道~

以上给大家分享了Javascript中匿名函数的调用与写法,希望对大家有所帮助。

Javascript 相关文章推荐
juqery 学习之六 CSS--css、位置、宽高
Feb 11 Javascript
ie8本地图片上传预览示例代码
Jan 12 Javascript
jQuery中的$.ajax()方法应用
May 06 Javascript
zeroclipboard 单个复制按钮和多个复制按钮的实现方法
Jun 14 Javascript
js+html5实现canvas绘制圆形图案的方法
Jun 05 Javascript
javascript中传统事件与现代事件
Jun 23 Javascript
Node.js返回JSONP详解
May 18 Javascript
vue2.0 中使用transition实现动画效果使用心得
Aug 13 Javascript
小程序实现左滑删除功能
Oct 30 Javascript
微信小程序开发摇一摇功能
Nov 22 Javascript
vue 实现上传组件
May 31 Vue.js
JS封装cavans多种滤镜组件
Feb 15 Javascript
JavaScript+html5 canvas绘制的圆弧荡秋千效果完整实例
Jan 26 #Javascript
JS组件Bootstrap Select2使用方法详解
Apr 17 #Javascript
基于JavaScript实现全屏透明遮罩div层锁屏效果
Jan 26 #Javascript
Hallo.js基于jQuery UI所见即所得的Web编辑器
Jan 26 #Javascript
基于JavaScript如何制作遮罩层对话框
Jan 26 #Javascript
基于Node.js实现nodemailer邮件发送
Jan 26 #Javascript
JavaScript小技巧整理篇(非常全)
Jan 26 #Javascript
You might like
咖啡与牛奶
2021/03/03 冲泡冲煮
解析link_mysql的php版
2013/06/30 PHP
PHP 如何利用phpexcel导入数据库
2013/08/24 PHP
php设置session值和cookies的学习示例
2014/03/21 PHP
PHP获取指定月份第一天和最后一天的方法
2015/07/18 PHP
php简单生成随机数的方法
2015/07/30 PHP
PHP批量获取网页中所有固定种子链接的方法
2016/11/18 PHP
三个思路解决laravel上传文件报错:413 Request Entity Too Large问题
2017/11/13 PHP
JavaScript基本概念初级讲解论坛贴的学习记录
2009/02/22 Javascript
用JavaScript显示浏览器客户端信息的超相近教程
2015/06/18 Javascript
判断jQuery是否加载完成,没完成继续判断的解决方法
2017/12/06 jQuery
JS动态插入脚本和插入引用外部链接脚本的方法
2018/05/21 Javascript
angularJs利用$scope处理升降序的方法
2018/10/08 Javascript
vue-cli3 项目从搭建优化到docker部署的方法
2019/01/28 Javascript
微信小程序传值以及获取值方法的详解
2019/04/29 Javascript
零基础写python爬虫之抓取糗事百科代码分享
2014/11/06 Python
利用Python自动监控网站并发送邮件告警的方法
2016/08/24 Python
python 数字类型和字符串类型的相互转换实例
2018/07/17 Python
解决python字典对值(值为列表)赋值出现重复的问题
2019/01/20 Python
Django Rest framework频率原理与限制
2019/07/26 Python
flask 使用 flask_apscheduler 做定时循环任务的实现
2019/12/10 Python
python 中不同包 类 方法 之间的调用详解
2020/03/09 Python
python 等差数列末项计算方式
2020/05/03 Python
HTML5 拖放功能实现代码
2016/07/14 HTML / CSS
国际知名军事风格休闲装品牌:Alpha Industries(阿尔法工业)
2017/05/24 全球购物
送给他或她的礼物:FUN.com
2018/08/17 全球购物
美国摩托车头盔、零件、齿轮及配件商店:Cycle Gear
2019/06/12 全球购物
高中生自我评价个人范文
2013/11/09 职场文书
园林技术个人的自我评价
2014/01/08 职场文书
社区中秋节活动方案
2014/01/29 职场文书
群众路线批评与自我批评
2014/02/06 职场文书
工地安全生产标语
2014/06/06 职场文书
入党函调证明材料
2014/12/24 职场文书
CSS3实现三角形不断放大效果
2021/04/13 HTML / CSS
CKAD认证中部署k8s并配置Calico插件
2022/03/31 Servers
如何Tomcat中使用ipv6地址
2022/05/06 Servers