(function()
{
//codehere
}
)();
这种语法有什么特别之处?()();意味着什么?
发布于 2008-10-09 05:39:12
创建一个匿名函数closure和all,而final ()告诉它自己执行。
其基本相同于:
function name (){...}
name();
因此,这段代码基本上没有什么特别之处,它只是创建一个方法并调用它的“捷径”,而不需要命名它。
这也意味着该函数是一次性的,或者是对象上的内部函数,当你需要闭包的特性时,它是最有用的。
发布于 2008-10-09 12:32:11
这是一个被调用的匿名函数。
这样做的目的是创建一个新的作用域,使局部变量不会从该作用域中溢出。例如:
var test = 1;
(function() {
var test = 2;
})();
test == 1 // true
关于此语法的一个重要注意事项是,您应该养成使用分号结束语句的习惯,如果您还没有这样做的话。这是因为当您调用Javascript时,它允许在函数名和它的括号之间换行。
下面的代码片段将导致错误:
var aVariable = 1
var myVariable = aVariable
(function() {/*...*/})()
这是它实际做的事情:
var aVariable = 1;
var myVariable = aVariable(function() {/*...*/})
myVariable();
创建新块作用域的另一种方法是使用以下语法:
new function() {/*...*/}
不同之处在于,前一种技术不会影响关键字"this“所指向的位置,而第二种技术会影响。
Javascript 1.8也有一个let语句,可以完成同样的任务,但不用说,大多数浏览器都不支持它。
发布于 2008-10-09 05:39:53
这是一个自动执行的匿名函数。末尾的()实际上是调用函数。
有一本好书(我已经读过)解释了Javascript中这些类型的语法的一些用法,那就是Object Oriented Javascript。
https://stackoverflow.com/questions/186024
复制相似问题