首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在JavaScript中解释这种结构?

如何在JavaScript中解释这种结构?
EN

Stack Overflow用户
提问于 2008-10-09 05:35:49
回答 6查看 1.4K关注 0票数 15
(function() 
 {
     //codehere
 }
)();

这种语法有什么特别之处?()();意味着什么?

EN

回答 6

Stack Overflow用户

发布于 2008-10-09 05:39:12

创建一个匿名函数closure和all,而final ()告诉它自己执行。

其基本相同于:

function name (){...}
name();

因此,这段代码基本上没有什么特别之处,它只是创建一个方法并调用它的“捷径”,而不需要命名它。

这也意味着该函数是一次性的,或者是对象上的内部函数,当你需要闭包的特性时,它是最有用的。

票数 40
EN

Stack Overflow用户

发布于 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语句,可以完成同样的任务,但不用说,大多数浏览器都不支持它。

票数 4
EN

Stack Overflow用户

发布于 2008-10-09 05:39:53

这是一个自动执行的匿名函数。末尾的()实际上是调用函数。

有一本好书(我已经读过)解释了Javascript中这些类型的语法的一些用法,那就是Object Oriented Javascript

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/186024

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档