javascript 函数声明和作用域差异

标签 javascript node.js

我无法轻松找到答案,因此即使这个问题是个骗局,也不会使用这些关键字得出答案。

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

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

function bar()
{
  //..
}

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

function qux()
{
  //..
}

// other??

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

最佳答案

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

函数声明

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

function foo () {

}

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

匿名函数表达式

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

something = function () {

};

命名函数表达式

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

something = function foo () {

};

函数构造函数

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

关于javascript 函数声明和作用域差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27924037/

相关文章:

javascript - 如何指示highcharts散点图打印所有数据标签

sockets - socket.emit() 与 socket.send()

node.js - Azure Function Linux Nodejs 和 @azure/storage-blob 给出错误 : Cannot read property 'startsWith' of undefined

node.js - ts-node 找不到我的类型定义文件

javascript - 在 PHP 上更新 MySQL 变量而不刷新

javascript - float 到字符串的转换 - JS

javascript - Crossfilter javascript 超出最大调用堆栈大小,无 Nan

javascript - 如何在 react 中的一组元素中识别单个 div 元素?

javascript - MongooseServerSelectionError: 连接 ECONNREFUSED::1:27017

node.js - 无法在heroku中加载rest api的favicon.ico