var, let, const


宣言、割当、範囲

  • 変数宣言では,このような規則が大きく示されている.
  • 宣言

    선언
    var name;
    let age;
    const sex;
    再宣言可能な唯一のvar
  • 再宣言?
    前述したように、変数を宣言し、再び宣言したのは
  • です.
    <script>
      var name; // 선언하고
      
      name = "NOHSANGWOO"; // 할당
      console.log(name); // 사용하고
    
      var name; // 재선언
      
      // 나머지 let, const는 재선언이 불가능
    </script>

    わりあて


    変数の値は할당です.
    var name = "NOHSANGWOO";
    let age = 31;
    const sex = "male";var, let再割り当て可能
    再割り当て
  • ?
    宣言された変数に値を再配置する
  • <script>
      var name = "NOHSANGWOO";
      let age = 31;
      const sex = "male";
      
      name = "KIMJONGRAN";
      age = 59;
      
      // const sex = "female"; // const는 값의 재할당이 불가능하다.
    </script>
    整理する
    varは再宣言可能、再割り当て可能
    let再宣言不可、再割り当て可能
    constを再宣言できません.再割り当てできません.

    スコープ(scope、有効スコープ)

  • 関数レベルスキャン(function-level-scope)
  • <script>
      function checkFunction(){
          if(1){
              var name = "NOHSANGWOO";
              console.log(name);  // NOHSANGWOO
          }
          console.log(name);  // NOHSANGWOO (이게 되네?)
          return 0;
      }
    
      checkFunction();
    </script>
  • ブロックレベルスキャン
  • <script>
      function checkFunction(){
          if(1){
              let name = "NOHSANGWOO";
              console.log(name);  // NOHSANGWOO
          }
          console.log(name);  // Uncaught ReferenceError: age is not defined
          return 0;
      }
    
      checkFunction();
    </script>
    varは関数レベルスキャン、letとconstはブロックレベルスキャン
    すなわち、함수레벨 스코프는関数で宣言されている場合、同じ関数のどこでも生きている.블록레벨 스코프はこのブロック({})の中でしか生きていない.
  • 全世界範囲
  • <script>
      var global = 'global';
    
      function foo() {
        var local = 'local';
        console.log(global);  // global
        console.log(local);   // local
      }
      foo();
    
      console.log(global);  // global
      console.log(local); // Uncaught ReferenceError: local is not defined
    </script>
    名前の通り、トップレベル(すなわちwindow)に直接宣言される変数
    Windowsサブ関数やブロックはどこでも使用できます.
  • 非ブロックスキャン
  • <script>
      if (true) {
        var name = "NOHSANGWOO";
      }
      console.log(name);  // NOHSANGWOO
    </script>
    varは関数レベルscopeです
    つまり、ブロック・レベルで宣言すると、ブロックが削除された後にブロックが宣言されたことになります.
    ここで、ブロックの削除はグローバル変数になります

    hoisting?

  • 変数または関数の宣言部分をコードの最上位にドラッグし、最初に宣言します.
    (何でもない)
  • <script>
     function someFunc(){
      console.log('hello');
      var name = 'NOHSANGWOOO';
      
    }
    </script>
    JavaScriptがこのコードを解釈すると、
    <script>
     function someFunc(){
      var name;
      console.log('hello');
      name = 'NOHSANGWOOO';
    }
    </script>
    アーカイブ済み
    !! しかし、先に発表しただけで、一緒に分配するわけではありません.
    <script>
     function someFunc(){
      console.log(name); // undefined
      var name = 'NOHSANGWOOO';
    }
    </script>