es6基础系列一:let和const

let 声明变量,可以说是具有作用域的var,用于声明变量,主要规则如下:
1 let声明的变量拥有块级作用域

{
	let i = 1;
	console.log(i); // 1
}
console.log(i); // Uncaught ReferenceError: i is not defined

2 同一作用域,let变量应先声明再调用,同时不能重复声明

{
	console.log(t1); // undefined
	var t1 = "var声明的变量";
	console.log(t2); // Uncaught ReferenceError: t2 is not defined
	let t2 = "let声明的变量"
}
{
	let t3 = "第一次声明";
	console.log(t3); // 直接报错 Uncaught SyntaxError: Identifier 't3' has already been declared
	let t3 = "第二次声明"
}

3 for循环中,let声明的变量在循环内部的独立作用域会形成对应的副本

var a = [];
for (var i = 0; i < 10; i++) {
    a[i] = function() {
        console.log("i的值="+i);
    };
}
console.log(i) // 10
a[6](); // i的值=10 无论a[n];i都已经是10了

var a = [];
for (let i = 0; i < 10; i++) {
    a[i] = function() {
        console.log("i的值="+i);
    };
}
// console.log(i) // 未定义 报错 Uncaught ReferenceError: i is not defined
a[6](); // i的值=6

const 声明静态变量,声明以后不能再修改,其他用法和let一样

const PI; //报错 Uncaught SyntaxError: Missing initializer in const declaration
const PI = 3.14; // 正确用法
PI = 3.1415; //报错,重复定义 Uncaught TypeError: Assignment to constant variable
posted @ 2017-04-11 15:55  yanyuji  阅读(174)  评论(0编辑  收藏  举报