JS作用域及作用域链

 

JavaScript 函数作用域

在 JavaScript 中有两种作用域类型:

  • 局部作用域
  • 全局作用域

JavaScript 拥有函数作用域:每个函数创建一个新的作用域。

作用域决定了这些变量的可访问性(可见性)。

函数内部定义的变量从函数外部是不可访问的(不可见的)。

全局 JavaScript 变量

函数之外声明的变量,会成为全局变量。

全局变量的作用域是全局的:网页的所有脚本和函数都能够访问它。

         // js 作用域就是代码名字(变量)在某个范围内起作用和效果

        // 全局作用域,在整个script标签里,或者在一个单独的JS文件
   
        // var num = 10;
        // console.log(num);
        // function fn(){
        //     // 局部作用域 在函数内部起作用
        //     var num = 20;
        //     console.log(num);
        // }
        // fn();
        // 1,全局变量
// 在全局变量作用域下var声明的变量
// 不使用var声明变量也是全局变量
          var num = 20;
          console.log(num);

 

        //   2.局部变量

 

局部 JavaScript 变量

在 JavaScript 函数中声明的变量,会成为函数的局部变量。

局部变量的作用域是局部的:只能在函数内部访问它们。

 

由于只能在函数内部识别局部变量,因此能够在不同函数中使用同名变量。

在函数开始时会创建局部变量,在函数完成时会删除它们。

    //   函数内部直接var声明
    //   函数的形参也是局部变量
          function fn(arw){
              var num1 = 30;
              num2 = 40;
              console.log(num1)
           
             
          }
          fn();
          console.log(num2)
        //    console.log(arw)
        // 块级作用域就是用花括号阔起来的 if{} for{}
 
  //    作用域链:内部函数访问外部函数的变量,采取的是链式查找的方式来决定取那个值 这种结果我们称为作用域链
       var num = 10;

       function fn(){
           var num = 15;

           function fun(){
               console.log(num);
           }
           fun();
       }
       fn();
 
posted @ 2022-01-07 11:32  王小雨wxy  阅读(67)  评论(0)    收藏  举报