ES6学习笔记
1,let的使用以及块级作用域的提出
let继承了var弱类型的特性,在块状作用域中使用(块状作用域是以{…}为新的作用域,包括if,for,function,都能生成自己的作用域)。
2,let的三个特性
- 不允许在相同作用域内,重复声明同一个变量(代码规范)
//不允许在相同作用域内,重复声明同一个变量
{
let a=1;
let a=2;//报错 Uncaught SyntaxErrot:Identifier 'a' has already been dec
}
- 不允许使用未声明的变量(代码规范)
- 暂时性死区(新旧特性结合导致)
//暂停性死区
let c=1
{
console.log(c) //报错 c is not defined
let c=2
console.log(c)
}
是继承了之前的特性以及结合新的特性导致的
之前的特性:层级关系作用域内会优先查找已经在内部声明的变量
新的特性:所以在本例中,c未声明就打印就会报错
3,const的使用
基本用法:const声明的变量,不能改变
什么不能变:常规变量(String,Number,Boolean)声明并赋值后就不能改变,如果变就会报错。对象(Json,Array)的地址不能改变
什么能变:对象的值可以改变
//不能改变
<script type="text/javascript">
const 紫薯精='紫薯'
紫薯精='灭霸' //报错:Uncaught TypeError:Assignment to constant variable.
</script>
//可以改变
<script type="text/javascript">
const 地主=[]
地主.push('紫薯精')
地主.length=0
地主=[]//Assignment to constant variable
</script>