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 attachEvent和addEventListener使用方法
Mar 19 Javascript
基于mootools 1.3框架下的图片滑动效果代码
Apr 22 Javascript
jquery中post方法用法实例
Oct 21 Javascript
使用Javascript写的2048小游戏
Nov 25 Javascript
Highcharts 多个Y轴动态刷新数据的实现代码
May 28 Javascript
详解Angular的数据显示优化处理
Dec 26 Javascript
Javascript面试经典套路reduce函数查重
Mar 23 Javascript
vue2.0实战之使用vue-cli搭建项目(2)
Mar 27 Javascript
深入理解vue中的$set
Jun 01 Javascript
详谈vue+webpack解决css引用图片打包后找不到资源文件的问题
Mar 06 Javascript
使用Sonarqube扫描Javascript代码的示例
Dec 26 Javascript
jQuery+ajax实现文件上传功能
Dec 22 jQuery
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
使用sockets:从新闻组中获取文章(三)
2006/10/09 PHP
php中$_REQUEST、$_POST、$_GET的区别和联系小结
2011/11/23 PHP
解析argc argv在php中的应用
2013/06/24 PHP
php中3种方法删除字符串中间的空格
2014/03/10 PHP
取得父标签
2006/11/14 Javascript
使用 JScript 创建 .exe 或 .dll 文件的方法
2011/07/13 Javascript
javascript 获取图片尺寸及放大图片
2013/09/04 Javascript
angularjs中的e2e测试实例
2014/12/06 Javascript
在页面中输出当前客户端时间javascript实例代码
2016/03/02 Javascript
jQuery CSS3自定义美化Checkbox实现代码
2016/05/12 Javascript
JavaScript中的Object对象学习教程
2016/05/20 Javascript
JS实现兼容各种浏览器的获取选择文本的方法【测试可用】
2016/06/21 Javascript
两种简单的跨域方法(jsonp、php)
2017/01/02 Javascript
微信小程序request出现400的问题解决办法
2017/05/23 Javascript
详解Vue2.0里过滤器容易踩到的坑
2017/06/01 Javascript
js脚本编写简单刷票投票系统
2017/06/27 Javascript
JavaScript实现HTML5游戏断线自动重连的方法
2017/09/18 Javascript
vue 添加vux的代码讲解
2017/11/30 Javascript
详解ajax的data参数错误导致页面崩溃
2018/04/30 Javascript
Vue页面跳转动画效果的实现方法
2018/09/23 Javascript
JavaScript中this用法学习笔记
2019/03/17 Javascript
NodeJs 模仿SIP话机注册的方法
2019/06/21 NodeJs
vue中template的三种写法示例
2020/10/21 Javascript
在Django框架中设置语言偏好的教程
2015/07/27 Python
python入门教程 python入门神图一张
2018/03/05 Python
对tensorflow中tf.nn.conv1d和layers.conv1d的区别详解
2020/02/11 Python
美国时尚大码女装购物网站:Avenue
2019/05/24 全球购物
开会迟到检讨书
2014/02/03 职场文书
运动会方阵解说词
2014/02/12 职场文书
科级干部群众路线教育实践活动个人对照检查材料
2014/09/19 职场文书
车辆转让协议书
2014/09/24 职场文书
转正申请报告格式
2015/05/15 职场文书
2015年圣诞节寄语
2015/08/17 职场文书
先进个人主要事迹范文
2015/11/04 职场文书
Python线程池与GIL全局锁实现抽奖小案例
2022/04/13 Python
Vue ECharts实现机舱座位选择展示功能
2022/05/15 Vue.js