-1
var test = 100;

function test(){

var i=0;

}

alert(test);

これをテストして、変数と関数名の優先順位を教えてください。

上記のテストの後、最初の行をコメントしてみて// var test = 100; 、出力が何であるかを確認してください。

なぜこれが起こったのか知りたいだけですか?

誰でも私を助けることができますか?

4

4 に答える 4

0

変数名と同じ関数名を使用しないでください。
最初に変数を定義してから関数を定義すると、その変数は関数でオーバーライドされます。

function test(){

alert(3);

}

と同じです

var test=function() {alert(3)};
于 2012-12-24T07:13:43.117 に答える
0

では、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 になる理由が理解できたと思います。

于 2012-12-24T07:55:48.867 に答える
0

それは100を出力します。あなたはalert()関数でtestはなく変数だからだと思いますtest()

私はそれにフィドルを走らせた..

jsfiddle テスト

于 2012-12-24T06:44:44.970 に答える
0

変数スコープに従って、関数スコープ値 i=0 に移動します。関数を呼び出したい場合は、戻り値を使用して外側で test() を呼び出す必要があります。スコープ変数から値を取得するだけです。

var test = 100;
function test(){
var i=0;
return i;
}
alert(test());
于 2012-12-24T07:32:41.700 に答える