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 相关文章推荐
Javascript 汉字字节判断
Aug 01 Javascript
javascript验证只能输入数字和一个小数点示例
Oct 21 Javascript
JS 仿腾讯发表微博的效果代码
Dec 25 Javascript
js与jquery获取父元素,删除子元素的两种不同方法
Jan 09 Javascript
javascript中typeof操作符和constucor属性检测
Feb 26 Javascript
JavaScript编写一个贪吃蛇游戏
Mar 09 Javascript
bootstrap table使用入门基本用法
May 24 Javascript
浅谈React Native 中组件的生命周期
Sep 08 Javascript
Layui 设置select下拉框自动选中某项的方法
Aug 14 Javascript
详解基于vue-cli3快速发布一个fullpage组件
Mar 08 Javascript
JS继承定义与使用方法简单示例
Feb 19 Javascript
vue如何在项目中调用腾讯云的滑动验证码
Jul 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
PHP框架Swoole定时器Timer特性分析
2014/08/19 PHP
thinkphp5.0自定义验证规则使用方法
2017/11/16 PHP
PHP实现的支付宝支付功能示例
2019/03/26 PHP
js单例模式的两种方案
2013/10/22 Javascript
jquery显示隐藏input对象
2014/07/21 Javascript
谈谈Jquery中的children find 的区别有哪些
2015/10/19 Javascript
JavaScript自学笔记(必看篇)
2016/06/23 Javascript
require.js 加载 vue组件 r.js 合并压缩的实例
2016/10/14 Javascript
jQuery插件echarts设置折线图中折线线条颜色和折线点颜色的方法
2017/03/03 Javascript
JS jQuery使用正则表达式去空字符的简单实现代码
2017/05/20 jQuery
微信小程序tabbar不显示解决办法
2017/06/08 Javascript
JavaScript实现打字游戏
2021/02/19 Javascript
[01:04:01]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS DT第一场
2014/05/24 DOTA
python在不同层级目录import模块的方法
2016/01/31 Python
python利用urllib和urllib2访问http的GET/POST详解
2017/09/27 Python
Python subprocess模块常见用法分析
2018/06/12 Python
python3利用ctypes传入一个字符串类型的列表方法
2019/02/12 Python
pytorch程序异常后删除占用的显存操作
2020/01/13 Python
基于pygame实现童年掌机打砖块游戏
2020/02/25 Python
英国最大的奢侈品零售网络商城:Flannels
2016/09/16 全球购物
FILA斐乐中国官方商城:意大利运动品牌
2017/01/25 全球购物
萨克斯第五大道精品百货店: Saks Fifth Avenue
2017/04/28 全球购物
NFL加拿大官方网上商店:NHLShop.ca
2019/03/12 全球购物
美国家居装饰网上商店:Lulu & Georgia
2019/09/14 全球购物
简历的自我评价
2014/02/03 职场文书
《母鸡》教学反思
2014/02/25 职场文书
网络编辑岗位职责
2014/03/18 职场文书
教师求职信范文
2014/05/24 职场文书
2014年人力资源工作总结
2014/11/19 职场文书
写给领导的感谢信
2015/01/22 职场文书
目标责任书格式范文
2015/05/11 职场文书
活动费用申请报告
2015/05/15 职场文书
结婚司仪主持词
2015/06/29 职场文书
初中英语教学反思范文
2016/02/15 职场文书
element多个表单校验的实现
2021/05/27 Javascript
win11高清晰音频管理器在哪里?win11找不到高清晰音频管理器解决办法
2022/04/08 数码科技