我最近开始维护别人的 JavaScript 代码。我正在修复错误、添加功能并尝试整理代码并使其更加一致。
之前的开发者使用了两种声明函数的方式,我不知道这背后是否有原因。
两种方式是:
var functionOne = function() {
// Some code
};
function functionTwo() {
// Some code
}
使用这两种不同方法的原因是什么,每种方法的优缺点是什么?有什么可以用一种方法完成而另一种方法不能完成的事情吗?
原文由 Richard Garside 发布,翻译遵循 CC BY-SA 4.0 许可协议
不同之处在于
functionOne
是一个函数表达式,因此仅在到达该行时才定义,而functionTwo
是一个函数声明,并且在执行其周围的函数或脚本时立即定义(由于 提升)。例如,一个函数表达式:
并且,一个函数声明:
从历史上看,块内定义的函数声明在浏览器之间的处理方式不一致。严格模式(在 ES5 中引入)通过将函数声明范围限定为它们的封闭块来解决这个问题。