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的$(document).ready()和onload的加载顺序
May 26 Javascript
cument.execCommand()用法深入理解
Dec 04 Javascript
jQuery CSS3相结合实现时钟插件
Jan 08 Javascript
AngularJS 2.0新特性有哪些
Feb 18 Javascript
微信小程序中顶部导航栏的实现代码
Mar 30 Javascript
jquery请求servlet实现ajax异步请求的示例
Jun 03 jQuery
微信小程序实现顶部选项卡(swiper)
Jun 19 Javascript
vue 添加vux的代码讲解
Nov 30 Javascript
浅谈vue同一页面中拥有两个表单时,的验证问题
Sep 18 Javascript
微信小程序实现元素渐入渐出动画效果封装方法
May 18 Javascript
uni-app自定义导航栏按钮|uniapp仿微信顶部导航条功能
Nov 12 Javascript
AJAX XMLHttpRequest对象创建使用详解
Aug 20 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 数组动态添加实现代码(最土团购系统的价格排序)
2011/12/30 PHP
基于php伪静态的实现详细介绍
2013/04/28 PHP
深入解析PHP的Laravel框架中的event事件操作
2016/03/21 PHP
Zend Framework实现具有基本功能的留言本(附demo源码下载)
2016/03/22 PHP
找到了一篇jQuery与Prototype并存的冲突的解决方法
2007/08/29 Javascript
Javascript 获取LI里的内容
2008/12/17 Javascript
JavaScript中的排序算法代码
2011/02/22 Javascript
JavaScript 的继承
2011/10/01 Javascript
移动节点的jquery代码
2014/01/13 Javascript
如何在node的express中使用socket.io
2014/12/15 Javascript
JS实现网页背景颜色与select框中颜色同时变化的方法
2015/02/27 Javascript
关于 jQuery Easyui异步加载tree的问题解析
2016/12/06 Javascript
详解webpack+angular2开发环境搭建
2017/06/28 Javascript
webpack开发跨域问题解决办法
2017/08/03 Javascript
JavaScript中字符串的常用操作方法及特殊字符
2018/03/18 Javascript
不使用JavaScript实现菜单的打开和关闭效果demo
2018/05/01 Javascript
详解jQuery-each()方法
2019/03/13 jQuery
Servlet返回的数据js解析2种方法
2019/12/12 Javascript
Vue 按照创建时间和当前时间显示操作(刚刚,几小时前,几天前)
2020/09/10 Javascript
[27:28]Ti4 冒泡赛第二天 iG vs NEWBEE 1
2014/07/15 DOTA
django Serializer序列化使用方法详解
2018/10/16 Python
twilio python自动拨打电话,播放自定义mp3音频的方法
2019/08/08 Python
解决python明明pip安装成功却找不到包的问题
2019/08/28 Python
Python3标准库之dbm UNIX键-值数据库问题
2020/03/24 Python
pytorch加载语音类自定义数据集的方法教程
2020/11/10 Python
Nisbets法国:英国最大的厨房和餐饮设备供应商
2019/03/18 全球购物
资料员的岗位职责
2013/11/20 职场文书
2013的个人自我评价
2013/12/26 职场文书
幼儿园大班毕业感言
2014/02/06 职场文书
成语的广告词
2014/03/19 职场文书
七匹狼男装广告词
2014/03/21 职场文书
委托书的写法
2014/09/16 职场文书
党组织领导班子整改方案
2014/10/25 职场文书
中学教师个人总结
2015/02/10 职场文书
幼儿园教师个人工作总结2015
2015/05/12 职场文书
利用For循环遍历Python字典的三种方法实例
2022/03/25 Python