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号