javascript - 为什么 JavaScript 函数声明(和表达式)?

标签 javascript

我见过其他人使用以下模式。

var bar = function foo(){};
console.log(bar); // foo()
console.log(foo); // ReferenceError: foo is not defined

但是为什么呢?如果两者都被宣布,我可以理解这一点,但事实并非如此。这是为什么?

最佳答案

正如其他人所提到的,在示例中使用第一种形式(命名函数表达式)可以帮助调试,尽管随着浏览器中内置开发人员工具的最新改进,这个论点是变得越来越没有说服力。使用命名函数表达式的另一个原因是,您可以将函数名称用作函数体内的变量,而不是使用 ES5 中现已弃用的 arguments.callee

但是,命名函数表达式在 Internet Explorer < 9 中实现不正确且存在问题,当您针对这些浏览器时通常应避免使用命名函数表达式。请参阅Juriy Zaytsev's excellent article on the subject了解更多信息。

关于javascript - 为什么 JavaScript 函数声明(和表达式)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28454417/

相关文章:

javascript - 将数组长度拆分为另一个数组,作为每 20 个计数的范围插入新范围直至结束

javascript - 为什么从继承函数创建的实例与父函数创建的实例不同?

javascript - 使用 e4x 在 Flex 中编辑 XML

php - 使用 jquery 解析带有 html 标签的文本

javascript - 在 Typescript 中如何设置一个新类作为原型(prototype)?

javascript - 如何在 WordPress 中使用 AJAX 发送要下载的文件?

javascript - 使用Kendo Dataviz Vertical Bullet Graph,如何添加类似于条形图的标签?

Javascript removeClass() 问题

javascript - react 数据表组件,将单击的行的信息传递到模态中

javascript - Angular 如何过滤大于 ng-click?