javascript函数声明和范围差异[重复]

Posted

技术标签:

【中文标题】javascript函数声明和范围差异[重复]【英文标题】:javascript function declarations and differences in scope [duplicate] 【发布时间】:2015-03-11 12:29:57 【问题描述】:

我不能轻易找到答案,所以即使这个问题是骗人的,答案也不会使用这些关键字。

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

var foo = function()

  //..


function bar()

  //..


var baz= function()

  //..


function qux()

  //..


// other??

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

【问题讨论】:

但在“相关”问题下,前两个链接正是您需要的... 【参考方案1】:

javascript 中有四种创建函数的方法。

函数声明

这将在当前范围内创建一个变量foo,并为其分配一个命名函数。

function foo () 


函数声明被提升,因此在适用范围内将它们放在哪里都没有关系。不过,在使用它们之前定义它们被认为是一种很好的编码习惯。

匿名函数表达式

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

something = function () 

;

命名函数表达式

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

something = function foo () 

;

函数构造函数

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

【讨论】:

以上是关于javascript函数声明和范围差异[重复]的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript连载15-return函数声明方式差异化回调函数

JS中的函数声明速度差异

混淆 Javascript 函数和参数声明 [重复]

javascript 作用域详解

在构造函数与原型中声明javascript对象方法[重复]

Javascript中的函数声明[重复]