関数パラメータと、関数内で同じ名前の変数または関数を宣言する場合の問題についての深い理解

yulia
リリース: 2018-09-19 14:48:07
オリジナル
2118 人が閲覧しました

最近暇なので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 サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート