我试图弄清楚这是如何工作的。当我引用尚未声明的命名 Javascript 函数时,在某些情况下,它可以工作。但是,如果我使用函数文字,它不会,但它也不会因ReferenceError
.
function works() {
var works_ref = foo;
function foo() {
console.log('ok');
};
console.log('works ' + works_ref);
}
function fails() {
var fails_ref = foo;
var foo = function() {
console.log('ok');
};
console.log('fails ' + fails_ref);
}
works();
fails();
这返回
"works function foo() {
console.log('ok');
}"
"fails undefined"
我想知道第一个示例是如何工作的——这是一种解释语言,不是编译的,所以我希望任何形式的前向引用都会失败——为什么第二个示例不生成ReferenceError
?