乍一看,编写以下两行 Javascript 似乎具有相同的效果。
function foo() { return 1; }
const foo = function() { return 1; }
第一个是函数声明,第二个是函数表达式。
// a function declaration
function foo() { return 1; }
// a function expression
const foo = function() { return 1; }
为了更容易记住,我们可以考虑以下规则:
“如果语句以 function 关键字开头,那么它就是一个函数声明,否则就是一个函数表达式。”
现在,如果我们将这两行放在上下文中,我们会看到它们之间存在细微的差异:
// this will print 1
console.log(foo());
function foo() { return 1; }
// this will result in an Uncaught ReferenceError
console.log(foo());
const foo = function() { return 1; }
这是因为函数声明在执行任何代码之前加载,而函数表达式仅在解释器到达该代码行时加载。或者换句话说,函数声明被提升到其他代码的顶部。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 xxx@163.com 举报,一经查实,本站将立刻删除。