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学习实例7 Ajax所有过程事件分析示例
Mar 23 Javascript
JavaScript高级程序设计(第3版)学习笔记6 初识js对象
Oct 11 Javascript
javascript的内存管理详解
Aug 07 Javascript
javascript的数组和常用函数详解
May 09 Javascript
ECMAScript5(ES5)中bind方法使用小结
May 07 Javascript
图文详解Heap Sort堆排序算法及JavaScript的代码实现
May 04 Javascript
js 获取经纬度的实现方法
Jun 20 Javascript
JS实现页面打印功能
Mar 16 Javascript
Vue-router 切换组件页面时进入进出动画方法
Sep 01 Javascript
React 实现拖拽功能的示例代码
Jan 06 Javascript
微信小程序自定义组件传值 页面和组件相互传数据操作示例
May 05 Javascript
微信小程序实现滑动翻页效果(完整代码)
Dec 06 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/01 无线电
PHP学习之数组值的操作
2011/04/17 PHP
linux命令之调试工具strace的深入分析
2013/06/03 PHP
基于jQuery UI CSS Framework开发Widget的经验
2010/08/21 Javascript
模拟jQuery中的ready方法及实现按需加载css,js实例代码
2013/09/27 Javascript
推荐4个原生javascript常用的函数
2015/01/12 Javascript
每天一篇javascript学习小结(基础知识)
2015/11/10 Javascript
js实现微信分享代码
2020/10/11 Javascript
AngularJS页面访问时出现页面闪烁问题的解决
2016/03/06 Javascript
jQuery UI结合Ajax创建可定制的Web界面
2016/06/22 Javascript
详解Node.js如何开发命令行工具
2016/08/14 Javascript
浅谈jQuery中hide和fadeOut的区别 show和fadeIn的区别
2016/08/18 Javascript
详解nodeJS之路径PATH模块
2017/05/31 NodeJs
详解win7 cmd执行vue不是内部命令的解决方法
2017/07/27 Javascript
vue 做移动端微信公众号采坑经验记录
2018/04/26 Javascript
关于JavaScript中高阶函数的魅力详解
2018/09/07 Javascript
JS字典Dictionary类定义与用法示例
2019/02/01 Javascript
vue-router 前端路由之路由传值的方式详解
2019/04/30 Javascript
Vue修改项目启动端口号方法
2019/11/07 Javascript
详解Howler.js Web音频播放终极解决方案
2020/08/23 Javascript
python列表去重的二种方法
2014/02/14 Python
win7 x64系统中安装Scrapy的方法
2018/11/18 Python
Python调用graphviz绘制结构化图形网络示例
2019/11/22 Python
python、PyTorch图像读取与numpy转换实例
2020/01/13 Python
Django配置Bootstrap, js实现过程详解
2020/10/13 Python
英文版区域经理求职信
2013/10/23 职场文书
广告学毕业生求职信
2014/01/30 职场文书
2014庆六一活动方案
2014/03/02 职场文书
大学生职业生涯规划书汇总
2014/03/20 职场文书
函授本科个人自我鉴定
2014/03/25 职场文书
读书活动总结范文
2014/04/26 职场文书
公司外出活动方案
2014/08/14 职场文书
小学教师师德整改措施
2014/09/29 职场文书
2014工程部年度工作总结
2014/12/17 职场文书
使用python求解迷宫问题的三种实现方法
2022/03/17 Python
vue实力踩坑之push当前页无效
2022/04/10 Vue.js