これがどのように機能するかを理解しようとしています。まだ宣言されていない名前付きの 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"
最初の例がどのように機能するのか疑問に思っています.これはインタープリター言語であり、コンパイルされていないため、あらゆる種類の前方参照が失敗すると予想されます.2番目の例では、なぜReferenceError
?