JavaScriptは、変数の繰り返し宣言を許可し、その値の上書き前の

3035 ワード

var a = 1;
var a = 'x';
console.log(a);
//    'x'
JavaScriptは繰り返し定義関数を許可します.
JavaScriptはこの概念を積載していません.関数の名来によって関数を区別します.
後に定義された同名の関数が上書きされる前のものは、パラメータとは無関係です.
function test() {
    console.log("test");
}
test();     //   "test"

function test(arg1) {
    console.log("test arg:" + arguments.length + " + " + arg1);
}
test(1,2);  //   "test arg:2 + 1"
実パラメータの数が形参より少ない場合、残りのデフォルトの割り当て値はundefinedであり、実際のパラメータの量が多い場合、すべてが伝わりますが、対応する形参はありません.
function test(arg1) {
    for(var i=0; i
変数と関数の名前が重なった場合、変数は有効になります.
これは変数と関数の事前解析に関する.
  • 変数宣言は最上位に置かれ、関数宣言も最上位に置かれ、変数より先に宣言されます.
  • 変数の宣言と賦値文を一緒に書くと、JSエンジンは解析時に声明と賦値の2つの部分に分解して、文のトップに置き、賦課は元の位置に残します.
  • によって宣言された変数は再ステートメントされません.
  • var a = 100;
    function a() {
        return "function";
    }
    console.log(a);     //   100
    console.log(a());   
    /*
      
    Uncaught TypeError: a is not a function
        (anonymous function) @test.html:9
    */
        JSには2つの関数があります.一つは一般関数で、一つは関数オブジェクトです.以下のようなのが「関数オブジェクト」です.実は匿名関数を宣言して、その関数のinitメソッドを変数に割り当てます.
    var a = 100;
    var a = function() {
        return "function";
    }
    console.log(a);
    /* 
      
    function() {
        return "function";
    }
    */
    console.log(a());   //   "function"
    関数と内部変数の名前を変更します.
    普通の関数を定義します.つまり、window変数の下で、keyを定義します.その名前は関数名で、値はこの関数のアドレスです.関数内部のthisはwindowオブジェクトを指します.
    function a() {
        console.log(this);  //   window{...}
        this.a = 1;         //  window.a = 1,  window  function a         。
        var a = 5;          //              ,          。  
        a = 10;
        var v = "value"
        return "function";
    }
    console.log(a);         //   function a {...}
    console.log(a());       //   "function"
    console.log(a);         //   1
    console.log(v);
    /*
      
    Uncaught ReferenceError: v is not defined
        (anonymous function) @ mycolor.html:15
    */
    「JavaScriptは変数を繰り返し宣言し、その後の声明の上書きを許可する」というのがあります.
    JavaScriptは変数が繰り返し宣言されることを許可しています.変数を宣言する時、JavaScriptは自分でこの変数が宣言されているかどうかを判断します.すでに宣言されているならば、繰り返し声明(すなわち変数の非最初の声明を除いて)はスキップされ、音声明快の操作は行われません.
    JavaScript変数の値は重複して与えられます.最後の割当値はこの変数の最後の結果です.
    var a=1;
    var a=2;
    
    //       :
    var a;
    //a=1;
    a=2;
    
    //       :
    //var a=1;
    var a=2;
    このノートのカバーとは、実は赋価のカバーです.ステートメントが上書きされると、ステートメントはundefinedであり、最初のステートメントではなくundefinedであるべきです.つまり、ステートメントが上書きされているなら、var a=1がないに相当します.
    このカバーは声明の上書きですか?それとも賦課の上書きですか?下のコードを見てください.
    var a=1;
    var a;
    
    //       :
    var a;
    //a=1;
    a;
    
    //       :
    //var a=1;
    var a;
    私たちはaの値を再出力します.undefinedかそれとも1かを検証すれば分かります.
    console.log(a);//   1
     
    原文の住所https://www.runoob.com/js/js-variables.html
    let宣言の変数は、その宣言されたブロックまたはサブブロックの中だけで利用できます.この点はvarと似ています.両者の間の最も主要な違いは、var宣言の変数のスコープが閉鎖関数全体であることにある.
    constキーワードはJavaScriptの定数を宣言するために用いられます.(変数に対しては変更できませんが、同じ情報を格納するための「コンテナ」です.)定数の値は、再割当値によっては変更できません.再宣言はできません.