已被阅读 1251 次 | 文章分类:javascript | 2018-04-05 16:03
该篇文章以实例来介绍ES6语法规则中声明变量新特性 let const,以及let与var关键词的区别
一:const命令
const命令用来声明一个只读的常量,一旦声明常量的值则不允许修改;其他的特性与let命令一样,后续详解let命令
<script>
const PI = 3.1415;
PI = 3;
// Uncaught TypeError: Assignment to constant variable.
</script>
二:let命令-块级作用域属性
let是块级作用域的命令,当我们需要让变量只在块级作用域里有效的话,就需要使用它;最常用到的一个块级作用域需求-写循环体,我们通常都是希望变量只在循环体内有效。所以建议使用let,不会在循环体外污染变量;
<script>
for (let i = 0; i < 5; i++) {
console.log("循环体内,i=",i);
}
console.log("循环体外,i=", i)
// 循环体内,i= 1
// 循环体内,i= 2
// 循环体内,i= 3
// 循环体内,i= 4
// Uncaught ReferenceError: i is not defined
</script>
三:let命令-声明不提升
如果用var来声明一个变量,通常会发生声明提升现象,即声明在后使用在前;而如果用let来声明一个变量的话,不会发生声明提升。
<script>
console.log("i",i);
let i = 0;
//Uncaught ReferenceError: i is not defined
</script>
<script>
console.log("i=",i);
var i = 0;
//i= undefined
</script>
所谓的变量提升,即把变量的声明提升,不会提升变量的值;即下面这样;
<script>
let i;
console.log("i",i);
i= 0;
//Uncaught ReferenceError: i is not defined
</script>
<script>
var i;
console.log("i=",i);
i = 0;
//i= undefined
</script>
四:let命令-不可重复定义变量名
已经用let定义的变量,不可以再次定义,负责会报错;但是var可以重复定义
<script>
let a = 10
let a = 20
console.log(a)
// Uncaught SyntaxError: Identifier 'a' has already been declared
</script>
<script>
var a = 10
var a = 20
console.log(a)
// 20
</script>
五:let命令-不会给全局变量加属性
var 定义的变量会自动成为全局变量的属性,但是let声明的变量不会;
<script>
let a = 1
var b = 2
console.log(window.a)
console.log(window.b)
// undefined 2
</script>
QQ:3410192267 | 技术支持 微信:popstarqqsmall
Copyright ©2017 xiaobaigis.com . 版权所有 鲁ICP备17027716号