この質問で申し訳ありませんが、この問題は私の一日を本当に台無しにしました。
次のコードは、必要に応じて10を警告します。
var globalId='10';
function check(){
alert(globalId);
}
check();
しかし、この次のコードはundefinedを警告します:
var globalId='10';
function check(){
alert(globalId);
var globalId;
}
check();
関数で変数をローカル変数として宣言すると、すでにグローバルとして宣言している場合、アラートにundefinedと表示されるのはどうしてでしょうか?
これは簡単な例ですが、元のコードでは、関数の開始の間に多くのことを行いました。その後、長い道のりで が定義されているかどうかを確認し、定義されていない場合globalId
は定義します。if(!globalId){var globalId;}
これは、私のアラートがJavaScript が最初に関数全体を実行したかのように、関数の先頭に undefined が生成され、変数が宣言されている可能性があるかどうかを確認し、宣言されている場合はそれらを宣言するため、私のアラートは「宣言されていない」変数を指していました。
JavaScriptが関数を実行する前にすべての変数を「事前宣言」することが本当なら、条件が満たされていない条件で宣言された変数であっても、誰かが私に説明できますか?