JavaScriptの基礎:JS関数で宣言されているすべての変数は関数全体で定義されています.

5604 ワード

JavaScriptの基礎:JS関数で宣言されているすべての変数は関数全体で定義されています.
JS関数で宣言されているすべての変数は関数全体で定義されています.この言葉はどういう意味ですか?これを知って何の役に立つのですか?
まず基本概念を説明します.
変数の作用範囲をロールフィールドと呼び、ある変数のプログラム内での有効範囲を指します.作用領域に応じて、変数は大域変数と局所変数に分類されます.
  • グローバル変数のスコープは大域的であり、JavaScriptプログラム全体において、大域変数はどこにも存在します.
  • で、関数の内部で宣言された変数は、関数の内部でのみ機能します.これらの変数は局所変数であり、作用領域は局所的である.関数のパラメータも局所的であり,関数内部でのみ作用する.
  • 関数内部では、同じ名前のグローバル変数よりもローカル変数の優先度が高いです.大域変数名と同じ局所変数が存在する場合、または大域変数と同名のパラメータを関数内部で宣言した場合、この大域変数は再機能しません.
    ゆっくり見てみましょう.
    この関数を見てください.
    1
    2
    3
    4
    5
    6
    7
    <
    script type=
    "text/javascript"
    >
    
    var a= 'hello' ;
    function f( ) {
    alert ( a) ;
    }
    f( ) ;
    </ script>
    この関数の結果は、私たちが想像していたように、「ハロー」文字列がポップアップされます.
    次にこの関数を見ます.
    1
    2
    3
    4
    5
    6
    7
    8
    <
    script type=
    "text/javascript"
    >
    
    var a= 'hello' ;
    function f( ) {
    alert ( a) ;
    var a= "word"
    }
    f( ) ;
    </ script>
    「hello」がイジェクトされたのですか?いいえ、なぜですか?タイトルの中のその言葉のためです.JS関数で宣言されているすべての変数は関数全体で定義されています.つまり、var a=wordは関数で宣言しました.ポップアップ後に宣言されたものですが、関数で定義されています.つまり、関数がイジェクトされたaは後のvar=wordです.定義されたaでは、ポップアップは「word」ですか?いいえ、ちがいます.ここにはもう一つのルールがあります.局部変数は関数全体に定義されていますが、var宣言を実行する前に初期化されません.つまり、ポップアップは初期化されていない変数です.当然、ポップアップはundefinedです.なぜですか?これは規則です.他の説明はありません.
    この関数は以下の通りです.
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <
    script type=
    "text/javascript"
    >
    
    var a= 'hello' ;
    function f( ) {
    alert ( a) ;
    var a= "word"
    alert ( a)
    }
    f( ) ;
    </ script>
    上に述べたことが分かりましたら、最初に弾いたのはundefinedrの二番目のポップアップがwordだったと思います.
    これは私たちに何の役に立つでしょうか?これは、なぜすべての変数宣言をまとめて関数の先頭に置くのが良い習慣なのかを示しています.あなたもずっとこのようにしています.私もそうですが、今は分かりました.なぜ私はこうしますか?