ES6-let、const和块级作用域

ES6与ES5有所不同,对变量的作用域进行了详细的划分,并且有了严格的使用范围;

与ES5的不同:

(1)作用范围发生变化
(2)无变量提升

作用范围

在ES6中变量的作用域分为:全局作用域,局部作用域,块级作用域
全局作用域:定义在函数体和{ }外,在全局范围内生效
局部作用域:定义在函数体内部,包括函数的参数,仅在函数体内部有效
块级作用域:定义在{ }内部,仅在{ }中生效

无变量提升

在ES6中变量必须先定义在使用

必须先定义在使用

a=10;
let a;
console.log(a)  // Uncaught ReferenceError: a is not defined

全局变量

let a=20;
   function demo1() {   //全局变量
       console.log(a) // 20
   }
   console.log(a) // 20
   demo1();

局部变量

  function demo() { // 局部变量
        let a=10;
        console.log(a); // 10
    }
    demo();
function demo1(){
   a = 1;
   let a;
   console.log(a)  // Uncaught ReferenceError: a is not defined
  }
    demo1();

在函数demo中能够正常的调用,但是在demo1在调用的过程中会报错,因为在给a赋值之后,在去声明的变量。注意:若未声明则默认为ES5中的语法,会在全局 var a;

块级作用域

let a=9;    
if(a>4) {
   let b=10;
   console.log(b);  // 10
}
  console.log(b);  // Uncaught ReferenceError: b is not defined
注意:

在ES6中,语法更加的严格,必须先定义在使用。还需注意变量的作用域(尤其的新增的块级作用域)

猜你喜欢

转载自blog.csdn.net/weixin_42331327/article/details/80943675