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 相关文章推荐
ASP小贴士/ASP Tips javascript tips可以当桌面
Dec 10 Javascript
jquery 年会抽奖程序
Dec 22 Javascript
ExtJS中文乱码之GBK格式编码解决方案及代码
Jan 20 Javascript
JavaScript让Textarea支持tab按键的方法
Jun 26 Javascript
jQuery实现时尚漂亮的弹出式对话框实例
Aug 07 Javascript
学习JavaScript设计模式之责任链模式
Jan 18 Javascript
Bootstrap基本组件学习笔记之下拉菜单(7)
Dec 07 Javascript
微信小程序(六):列表上拉加载下拉刷新示例
Jan 13 Javascript
Node.JS利用PhantomJs抓取网页入门教程
May 19 Javascript
jQuery AJAX与jQuery事件的分析讲解
Feb 18 jQuery
原生js实现二级联动菜单
Nov 27 Javascript
一小时迅速入门Mybatis之bind与多数据源支持 Java API
Sep 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程序
2006/10/09 PHP
php实现的遍历文件夹下所有文件,编辑删除
2010/01/05 PHP
如何使用PHP对网站验证码进行破解
2015/09/17 PHP
php之可变函数的实例详解
2017/09/13 PHP
php ZipArchive实现多文件打包下载实例
2019/10/31 PHP
prototype.js的Ajax对象
2006/09/23 Javascript
jquery 图片 上一张 下一张 链接效果(续篇)
2010/04/20 Javascript
JavaScript中也使用$美元符号来代替document.getElementById
2010/06/19 Javascript
jquery显示和隐藏div特效实例
2013/02/27 Javascript
jQuery随机切换图片的小例子
2013/04/18 Javascript
jquery索引在使用中的一些困惑
2013/10/24 Javascript
jquery实现更改表格行顺序示例
2014/04/30 Javascript
Javascript核心读书有感之表达式和运算符
2015/02/11 Javascript
详解jQuery中的元素的属性和相关操作
2015/08/14 Javascript
JS匿名函数实例分析
2016/11/26 Javascript
Bootstrap进度条与AJAX后端数据传递结合使用实例详解
2017/04/23 Javascript
vue的事件绑定与方法详解
2017/08/16 Javascript
Angular搜索 过滤 批量删除 添加 表单验证功能集锦(实例代码)
2017/10/25 Javascript
bootstrap与pagehelper实现分页效果
2018/12/29 Javascript
JS实现网站楼层导航效果代码实例
2020/06/16 Javascript
JavaScript实现表单验证功能
2020/12/09 Javascript
python网络编程学习笔记(10):webpy框架
2014/06/09 Python
Python简明入门教程
2015/08/04 Python
Python 实现取矩阵的部分列,保存为一个新的矩阵方法
2018/11/14 Python
python 将有序数组转换为二叉树的方法
2019/03/26 Python
python爬虫模拟浏览器的两种方法实例分析
2019/12/09 Python
opencv3/C++图像像素操作详解
2019/12/10 Python
UDP协议功能
2013/01/06 面试题
Java程序员常见面试题
2015/07/16 面试题
大学生表扬信范文
2014/01/09 职场文书
数控专业大学毕业生职业规划范文
2014/02/06 职场文书
2016清明节森林防火广播稿
2015/12/17 职场文书
jquery插件实现图片悬浮
2021/04/16 jQuery
实现一个简单得数据响应系统
2021/11/11 Javascript
Python3的进程和线程你了解吗
2022/03/16 Python
JS前端轻量fabric.js系列之画布初始化
2022/08/05 Javascript