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 innerText和innerHtml应用
Jan 28 Javascript
JavaScript Event学习第九章 鼠标事件
Feb 08 Javascript
js获取网页可见区域、正文以及屏幕分辨率的高度
May 15 Javascript
JQuery控制Radio选中方法分析
May 29 Javascript
JavaScript获取两个数组交集的方法
Jun 09 Javascript
基于javascript实现图片左右切换效果
Jan 25 Javascript
javascript之with的使用(阿里云、淘宝使用代码分析)
Oct 11 Javascript
Vue 2.x教程之基础API
Mar 06 Javascript
判断颜色是否合法的正则表达式(详解)
May 03 Javascript
Vue中引入样式文件的方法
Aug 18 Javascript
dts文件中删除一个node或属性的操作方法
Aug 05 Javascript
JS禁用右键、禁用Ctrl+u、禁用Ctrl+s、禁用F12的实现代码
Dec 01 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/03 冲泡冲煮
phpMyAdmin 链接表的附加功能尚未激活的问题
2010/08/01 PHP
PHP的explode和implode的使用说明
2011/07/17 PHP
php数组函数序列之end() - 移动数组内部指针到最后一个元素,并返回该元素的值
2011/10/31 PHP
phpexcel导出excel的颜色和网页中的颜色显示不一致
2012/12/11 PHP
基于PHP常用函数的用法详解
2013/05/10 PHP
PHP实现模仿socket请求返回页面的方法
2014/11/04 PHP
php生成年月日下载列表的方法
2015/04/24 PHP
PHP使用正则表达式获取微博中的话题和对象名
2015/07/18 PHP
浅谈PHP值mysql操作类
2016/06/29 PHP
PHP仿微信多图片预览上传实例代码
2016/09/13 PHP
详解在YII2框架中使用UEditor编辑器发布文章
2018/11/02 PHP
laravel Task Scheduling(任务调度)在windows下的使用详解
2019/10/22 PHP
JQuery解析HTML、JSON和XML实例详解
2014/03/29 Javascript
jQuery内置的AJAX功能和JSON的使用实例
2014/07/27 Javascript
Jquery技巧(必须掌握)
2016/03/16 Javascript
Backbone View 之间通信的三种方式
2016/08/09 Javascript
轻松掌握JavaScript代理模式
2016/08/26 Javascript
JavaScript日期对象(Date)基本用法示例
2017/01/18 Javascript
JavaScript继承与多继承实例分析
2018/05/26 Javascript
node.js到底要不要加分号浅析
2018/07/11 Javascript
vue中实现高德定位功能
2019/12/03 Javascript
javascript实现的图片预览和上传功能示例【兼容IE 9】
2020/05/01 Javascript
Vue中component标签解决项目组件化操作
2020/09/04 Javascript
python 不关闭控制台的实现方法
2011/10/23 Python
python 3调用百度OCR API实现剪贴板文字识别
2018/09/04 Python
Python3之不使用第三方变量,实现交换两个变量的值
2019/06/26 Python
python分数表示方式和写法
2019/06/26 Python
django3.02模板中的超链接配置实例代码
2020/02/04 Python
python range实例用法分享
2020/02/06 Python
用python读取xlsx文件
2020/12/17 Python
加拿大大码女装购物网站:Penningtons
2020/12/26 全球购物
《赵州桥》教学反思
2014/02/17 职场文书
工程资料员岗位职责
2014/03/10 职场文书
golang判断key是否在map中的代码
2021/04/24 Golang
win10音频服务未响应怎么解决?win10音频服务未响应未修复的解决方法
2022/08/14 数码科技