var test = 100;
function test(){
var i=0;
}
alert(test);
これをテストして、変数と関数名の優先順位を教えてください。
上記のテストの後、最初の行をコメントしてみて// var test = 100;
、出力が何であるかを確認してください。
なぜこれが起こったのか知りたいだけですか?
誰でも私を助けることができますか?
var test = 100;
function test(){
var i=0;
}
alert(test);
これをテストして、変数と関数名の優先順位を教えてください。
上記のテストの後、最初の行をコメントしてみて// var test = 100;
、出力が何であるかを確認してください。
なぜこれが起こったのか知りたいだけですか?
誰でも私を助けることができますか?
変数名と同じ関数名を使用しないでください。
最初に変数を定義してから関数を定義すると、その変数は関数でオーバーライドされます。
function test(){
alert(3);
}
と同じです
var test=function() {alert(3)};
では、javascript が次のコードをどのように処理するか見てみましょう。
var test = 100;
function test(){
var i=0;
}
alert(test);
巻き上げを使用すると、JS パーサーがコードを次のように変換します。
// Variables & functions declarations are hoisted
var test;
function test() {
var i = 0;
}
// Then the actual code is run. Thus, your assignment.
test = 100;
alert(test);
アラートが 100 になる理由が理解できたと思います。
変数スコープに従って、関数スコープ値 i=0 に移動します。関数を呼び出したい場合は、戻り値を使用して外側で test() を呼び出す必要があります。スコープ変数から値を取得するだけです。
var test = 100;
function test(){
var i=0;
return i;
}
alert(test());