最近暇なのでJavaScriptの豆知識をまとめてみました 例えば、面接の質問で関数の仮引数と関数内で宣言されている変数や関数の名前が同じになっているのですが、どういう状況なのでしょうか?知りたい人はこのまま読み進めてください。
function ab(x){ console.log(x); var x; console.log(x); }; ab(3);
この結果が発生しますが、関数内で宣言された変数に値が割り当てられると、渡されたパラメータが置き換えられます。
function ab(x){ console.log(x); var x = 4; console.log(x); }; ab(3);
出力結果は: .
関数内で宣言された関数が仮パラメータと同じ名前の場合:
function ab(x){ console.log(x); function x(){ console.log("我是函数") }; console.log(x); }; ab(3);
出力結果は:
なぜこのようなことが起こるのでしょうか? JS の機能の 1 つは関数宣言のプロモーションです。つまり、関数本体で宣言された関数がプロモーションされます。
しかし、無名関数を変数に代入する方法には、関数の機能がありません。宣言のプロモーションのため、以下に示すように x は宣言後まで変更されません。
以上が関数パラメータと、関数内で同じ名前の変数または関数を宣言する場合の問題についての深い理解の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。