Vue.js

ES6 let和const

2020-12-08  本文已影响0人  BSKSdorica

1.let :let声明的变量只在let命令所在的代码块内有效。

if(true){

let a =1;

var b = 2;

}

console.log(a);//ReferenceError: a is not defined

console.log(b);//2

案例:

1)var a = [];

for (var i = 0; i < 10; i++) {

a[i] = function () {

console.log(i);

};

}

a[6](); //10

a[9](); //10

2)var a = [];

for (let i = 0; i < 10; i++) {

a[i] = function () {

console.log(i);

};

}

a[6](); //6

a[9](); //9

3)for循环,设置循环变量的部分是父作用域,循环内部是一个单独的子作用域

for(let i=0;i<3;i++){

let i='abc';

console.log(i);

}// abc// abc// abc

let声明的变量不存在变量提升

暂时性死区:在代码块内,使用let命令声明变量之前,该变量都是不可用的。

let不允许在相同作用域内,重复声明同一个变量。

ES6 引入了块级作用域,明确允许在块级作用域之中声明函数。

function f(){console.log('I am outside!');}

(function(){

if(false){

 // 重复声明一次函数f

function f(){console.log('I am inside!');}

}

f();

}());  //I am outside!     ES5环境中  I am inside!

ES6 的块级作用域必须有大括号

2.const :声明一个只读的常量。一旦声明,常量的值就不能改变。

const a =1;

a  //1

a=2; //报错

const b; //报错

const和let相同,只在声明所在的块级作用域内有效。

const a=[];

a=['1']  //"a" is read-only

3.顶层对象的属性 :在浏览器环境指的是window对象,在 Node 指的是global对象。

let命令、const命令、class命令声明的全局变量,不属于顶层对象的属性。

上一篇 下一篇

猜你喜欢

热点阅读