tsingchong 发表于 2008-2-27 18:04

帮忙看个东西!

创建一个test.js文件,内容如下:
(function(){alert('hello world.')})();

<scritp type="text/javascript" src="test.js"/>

居然能直接执行匿名函数。

tsingchong 发表于 2008-2-27 18:12

讨论:

为什么呢?为什么在第一个括号里面函数能被直接解析执行,而把函数写在test.js里面,加载的时候只能解析语法,html调用才能触发函数题执行,想不通,为什么呢,是什么原因呢

渚薰 发表于 2008-2-28 08:48

function(){alert('hello world.')}
首先,上面这个叫做匿名函数
(function(){})()
匿名函数后面加(),就是普通调用函数的用法,等同于
var a=function() {};
a();
也等同于
(a=function(){})();

此语法的作用一般被用来创建闭包或者隐藏某些不想要暴露给父作用域的变量,例如
看这篇文章:http://www.ajaxgo.org/?p=7,请细心体会下,这种用法的益处

页: [1]

编程论坛