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"
}

浙公网安备 33010602011771号