JS中作用域、作用域链和预解析

变量局部变量和全局变量

作用域:就是变量的使用范围,有局部作用域和全局作用域

JS中没有块级作用域

作用域链变量的使用,从里到外,层层搜索,搜索到了便可使用,直到搜索到0级仍未找到,结果就是报错

eg1:

var num=10;  //作用域链-----------级别:0
function  f1(){
      var num=20;  //作用域链-----------级别:1
      function f2() {
       var  num=30;   //作用域链-----------级别:2
       console.log(num);
      }
      f2();
}
f1();

预解析:就是在浏览器解析代码之前,把变量的声明和函数的声明都提前到作用域的最上面(注:只是把声明提前了,值并没有提前)

eg2:

//变量的提升

console.log(num);//undefined
var  num=10;
//函数的声明被提前了
f1();
function f1() {
      console.log("这个函数,执行了");
}

猜你喜欢

转载自blog.csdn.net/weixin_41829477/article/details/81461037