ES6语法简介——1、块作用域构造let和const

1、块作用域构造let和const

****
块级作用域只存在于:①函数内部 ②块中(字符“{”和“}”之间

1.1、let声明和var声明不同之处在于:var声明无论在函数作用域或全局作用域哪里声明,都会被当成在当前作用域顶部声明的变量,这就是JavaScript的变量提升机制。

例:
function changeState(flag){
      if(flag){
            var color="red";
      }
      else{
            console.log(color);//此处可以访问变量color,值为undefined。
return null;
      }
}
changeState(false);

而let声明的变量不会被提升,可以把变量的作用域限制在当前代码块中。
例:

function changeState(flag){
	if(flag){let color="red";}
	else{console.log(color);//此处不能访问color
return null;}
}
changeState(false);

使用let变量还可以防止变量重复声明。
例:

var a =1
var a =2//ok
let a=3//报错

同一作用域下,不能使用let重复定义已经存在的标识符,但如果在不同的作用域下,则是可以的。
例:

var a=1;
{
      let a=2;
}

1.2、const声明

const关键字用于声明常量,在声明的同时必须对常量进行初始化。例: const a=10//正确 const a; a=10//错误 与let类似,在同一作用域下用const声明已经存在的标识符也会导致语法错误,不管这个标识符使用的是var还是let。使用const声明对象,对象本身的绑定不能修改,但对象的属性和值可以修改。
例:
 
const person={
      name:"zhang3"
      }
      person.name="li4";
      person.age=20;
      person={
            name:"wang5"
      }
posted @ 2020-11-06 13:04  0总在1前面  阅读(92)  评论(0)    收藏  举报