このMozillaの記事で、私は次のように読みました。
JavaScriptの変数に関するもう1つの珍しい点は、例外を取得せずに、後で宣言された変数を参照できることです。この概念は巻き上げとして知られています。JavaScriptの変数は、ある意味で「持ち上げられた」、つまり関数またはステートメントの先頭に持ち上げられます。ただし、まだ初期化されていない変数は、未定義の値を返します。
そして、いくつかの例:
/**
* Example 1
*/
console.log(x === undefined); // logs "true"
var x = 3;
/**
* Example 2
*/
// will return a value of undefined
var myvar = "my value";
(function() {
console.log(myvar); // undefined
var myvar = "local value";
})();
上記の例2は、次のように解釈されます。
var myvar = "my value";
(function() {
var myvar;
console.log(myvar); // undefined
myvar = "local value";
})();
少なくとも私が伝統的に単語の定義を解釈しているという意味では、「持ち上げられている」ものは何も見えません。変数undefined
は宣言されるまでのようです。どのような意味で「後で宣言された変数を参照する」ことができますか?