1.用let声明变量只在块级作用域起作用,适合在for循环使用,也不会出现变量提升现象。同一个代码块内,不可重复声明的相同变量,不可重复声明函数内的参数。
1.同一个块级作用域内,不允许重复声明同一个变量。{ var a =1; let a =2; //报错,因为a已经用var声明过}2.函数内不能用let重新声明函数的参数function say(word){ let word = 'hello Jack'; //报错:用let重新声明word参数 alert(word)}say('hello Lili');//say()函数内用let重新声明了word这个参数,会报错的,千万别这么干。
2.const也是用于声明一个常量,并必须赋值,声明后不可修改,跟let一样,只在块级作用域起作用,
不可重复声明同一个变量,不会变量提升,声明引用类型的常量时,要注意是传址赋值。
1.不可修改const Name = '张三';Name = '李四';//错误,企图修改常量Name2.只在块级作用域起作用,这点与let关键字一样。if(1){ const Name = '张三'; }alert(Name);//错误,在代码块{ }外,Name失效3.不存在变量提升,必须先声明后使用,这点也跟let关键字一样。if(1){ alert(Name);//错误,使用前未声明 const Name = '张三';}4.不可重复声明同一个变量,这点跟let也一样。var Name = '张三';const Name = '李四';//错误,声明一个已经存在的变量Name5.声明后必须要赋值const NAME; //错误,只声明不赋值
3.IE9正常运行ES6新特性 安装babel
npm install babel-core@5
<script src="browser.min.js"></script><script type="text/babel"> const Name = '张三';//使用新增的关键字:const声明常量 alert(Name);</script>