登陆 免费注册 提交网站
站长资讯 >> 站长学院 >> 网络编程
 2014-11-01 11:21浏览: 1112 次

JavaScript中匿名函数的多种写法详解

匿名函数没有实际名字,也没有指针,怎么执行滴?
其实大家可以看看小括号的意义就应该可以理解。小括号有返回值,也就是小括号内的函数或者表达式的返回值,所以说小括号内的function返回值等于小括号的返回值,不难理解 (function(){})()可以将没有名字的函数执行了把…
关于匿名函数写法,很发散~
最常见的用法:

代码如下:
(function() {
alert(‘water’);
})();

当然也可以带参数:

代码如下:
(function(o) {
alert(o);
})(‘water’);

想用匿名函数的链式调用?很简单:

代码如下:
(function(o) {
alert(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’);
}());//有点强制执行的味道~
那为什么加上这些符号呢?
弄清这个问题需要弄清函数表达式(function expression)和函数声明(function declaration)的区别:
函数表达式:

/* 函数表达式中的函数可以为匿名函数,也可以有函数名,但是该函数实际上不能直接使用,只能通过表达式左边的变量 a 来调用。*/
var a = function(){
alert(‘Function expression’);
}
var b = new a();

函数声明:

// 函数声明时必须有函数名
function a(){
alert(‘Function declaration’);
}
a();

而这段代码:

<script>
~function() {
alert(“hello, world.”);
} ();
< /script>

实际上可以分为两个部分(黑体部分和斜体部分)。黑体部分的匿名函数通过一元操作符变成了函数表达式,因而可以通过 () 来调用。

因此,执行匿名函数可以通过+,-,!,() 这样的形式来转化为函数表达式,就可以通过()来运行了。

匿名函数的好处在于:可以减少局部变量,以免污染现有的运行环境。jQuery等库都用到了这样的原理。
另外:通过+,-,!这三个符号运行的匿名函数比()运行的匿名函数可以减少一个字符的使用。

所以那些匿名函数附近使用括号或一些一元运算符的惯用法,就是来引导解析器,指明运算符附近是一个表达式。
按照这个理解,可以举出五类,超过十几种的让匿名函数表达式立即调用的写法:

本文到此结束!

网站首页 - 关于我们 - 联系我们 - 友情链接 - 帮助中心
Copyright ©2007-2020 www.Aisila.com All Rights Reserved
豫ICP备17005272号

豫公网安备 41022202000021号