JavaScript几个作用域问题

时间:2022-04-25
本文章向大家介绍JavaScript几个作用域问题,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

1、

var a = 0 ;

function f(){
  a = 1;
  console.log(a); //全局变量a
} console.log(a); //全局变量af();

 输出结果为:1 1 ,function中未声明直接赋值的a为作用域window的全局变量,很好理解

2、

var a = 0;
 function test(){
      var a;
      console.log(a); //局部变量a
      a = 1;
      console.log(a); //局部变量a
} test(); conosle.log(a); //全局变量a

  输出结果为:undefined 1 0

3、

    var a =0;
    function test(){
       console.log(a);
       var a = 1;
       console.log(a);
    }

    test();
    console.log(a);

  输出结果为:undefined 1 0 

总结:

1. JavaScript中只存在两种作用域:全局作用域window和函数作用域function,外部的function domain嵌套内部的function domain,这就是闭包原理;

2. function domain中未使用var事先声明而直接赋值或调用的变量会访问上一层作用域中的同名变量,一直到window全局domain,如果找不到则会报错;

3. var声明变量的执行优先级是最高的,所以在例子3中test()中第一次console.log(a)执行之前,已经事先执行了var a声明,但并未执行a = 1赋值,所以此时输出undefined