46-函数中变量作用域

  • 在JavaScript中 {} 外面的作用域, 我们就称之为全局作用域
  • 在JavaScript中函数后面的{}中的作用域, 我们就称之为局部作用域
  • 在ES6中只要{}没有和函数结合在一起,而是和其他含{}的语句在一起(如if(){}语句), 那么就称之为块级作用域
          // 块级作用域
          if(){
    
          }
          switch () {
    
          }
          while (){
    
          }
          do {
    
          }while ();
          for (;;){
    
          }
    
  • 块级作用域和局部作用域的区别
    • 在块级作用域中通过 var 定义的变量是全局变量

          {
              // 块级作用域
              var num = 123;  // 全局变量
          }
          console.log(num);
      
    • 在局部作用域中通过 var 定义的变量是局部变量

          function test() {
              var value = 666;    // 局部变量
          }
          test(); // 不管调不调用函数, 这里都访问不了value
          console.log(value);
      
  • 无论是在块级作用域还是在局部作用域中, 省略变量前面的let或者var就会变成一个全局变量
    • 注意点: 在企业开发中一定不要省略大括号

              // var num = 678;   // 全局变量
              // let num = 678;  // 局部变量
              num = 678;  // 全局变量
          }
          console.log(num);
      
          function test() {
              // var num = 123;  // 局部变量
              // let num = 123;  // 局部变量
              num = 123;  // 全局变量
          }
          test();
          console.log(num);
      

你可能感兴趣的:(46-函数中变量作用域)