javascript函数声明和范围的差异

时间:2015-01-13 14:08:32

标签: javascript node.js

我无法轻易找到答案,所以即使这个问题是一个骗局,答案也不会出现在这些关键词中。

我想知道示例app.js中声明函数的不同方式之间的区别

var foo = function()
{
  //..
}

function bar()
{
  //..
}

var baz= function()
{
  //..
}

function qux()
{
  //..
}

// other??

我也不清楚我可以使用每个功能的范围。谢谢!

1 个答案:

答案 0 :(得分:3)

在JavaScript中创建函数有四种方法。

函数声明

这将在当前作用域中创建变量foo并为其分配命名函数。

function foo () {

}

函数声明被提升,因此在适用范围内放置它们并不重要。在你使用它们之前定义它们被认为是很好的编码实践。

匿名函数表达式

这将创建一个没有名称的函数,并在表达式中使用它。在此示例中,它被分配给变量something

something = function () {

};

命名函数表达式

这与匿名函数表达式相同,不同之处在于它具有名称,在其自身范围内创建该名称的变量,并且在旧版本的Internet Explorer中为horribly broken

something = function foo () {

};

函数构造函数

不要使用函数构造函数。它们是eval的另一个名字。如果您有兴趣,可以在MDN上阅读相关内容。