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 相关文章推荐
jQuery Ajax文件上传(php)
Jun 16 Javascript
IE与Firefox在JavaScript上的7个不同写法小结
Sep 14 Javascript
Jquery 设置标题的自动翻转
Oct 03 Javascript
遨游,飞飞,IE,空中网 浏览器无提示关闭方法
Jul 11 Javascript
用js来刷新当前页面保留参数的具体实现
Dec 23 Javascript
jquery的总体架构分析及实现示例详解
Nov 08 Javascript
浅析Javascript中“==”与“===”的区别
Dec 23 Javascript
JavaScript小技巧整理
Dec 30 Javascript
js字符串操作总结(必看篇)
Nov 22 Javascript
利用Js+Css实现折纸动态导航效果实例源码
Jan 25 Javascript
js实现方块上下左右移动效果
Aug 17 Javascript
JavaScript进阶(二)词法作用域与作用域链实例分析
May 09 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
浅析PHP程序防止ddos,dns,集群服务器攻击的解决办法
2013/06/18 PHP
YII2框架中使用RBAC对模块,控制器,方法的权限控制及规则的使用示例
2020/03/18 PHP
使用原生JS实现弹出层特效
2014/12/22 Javascript
JS输入用户名自动显示邮箱后缀列表的方法
2015/01/27 Javascript
在HTML中插入JavaScript代码的示例
2015/06/03 Javascript
js带缩略图的图片轮播效果代码分享
2015/09/14 Javascript
基于jQuery滑动杆实现购买日期选择效果
2015/09/15 Javascript
基于jQuery实现文本框只能输入数字(小数、整数)
2016/01/14 Javascript
Angularjs修改密码的实例代码
2017/05/26 Javascript
JavaScript for循环 if判断语句(学习笔记)
2017/10/11 Javascript
实现图片首尾平滑轮播(JS原生方法—节流)
2017/10/17 Javascript
Node.js log4js日志管理详解
2018/07/31 Javascript
[02:27]DOTA2英雄基础教程 莱恩
2014/01/17 DOTA
进一步探究Python的装饰器的运用
2015/05/05 Python
python3 面向对象__类的内置属性与方法的实例代码
2018/11/09 Python
python pycharm的安装及其使用
2019/10/11 Python
Python Django模板之模板过滤器与自定义模板过滤器示例
2019/10/18 Python
python将时分秒转换成秒的实例
2019/12/07 Python
Python中包的用法及安装
2020/02/11 Python
PyQt5 QDockWidget控件应用详解
2020/08/12 Python
css3.0新属性效果在ie下的解决方案
2010/05/10 HTML / CSS
微软俄罗斯官方网站:Microsoft俄罗斯
2016/09/18 全球购物
在DELPHI中调用存储过程和使用内嵌SQL哪种方式更好
2016/11/22 面试题
自荐信的五个重要部分
2013/10/29 职场文书
初二生物教学反思
2014/02/03 职场文书
2014全国两会学习心得体会2000字
2014/03/10 职场文书
医院安全生产月活动总结
2014/07/05 职场文书
党员教师四风问题对照检查材料
2014/09/26 职场文书
校园运动会广播稿
2014/10/06 职场文书
出纳工作检讨书
2014/10/18 职场文书
法定授权委托证明书
2015/06/18 职场文书
推广普通话的宣传语
2015/07/13 职场文书
少儿励志名言(80句)
2019/08/14 职场文书
酒店工程部的岗位职责汇总大全
2019/10/23 职场文书
《进击的巨人》新联动CM 兵长强势出击兽巨人
2022/04/05 日漫
关于pytest结合csv模块实现csv格式的数据驱动问题
2022/05/30 Python