es6(一) let 和const:
// es6 新增let
// let同var 区别在于作用域的差别
let 只在代码块中有效
// 在控制台输出如下:
{
let a = 10;
var b = 1;
}
打印:
a a is not defined <==> b 1
2. for 循环中:
for (let i = 0; i < 10; i++) {
console.log(i); // 0~9
}
console.log(i); // i is not defined
var 声明的变量
for (var i = 0; i < 10; i++) { console.log(i); // 0~9 } console.log(i); // 10
//for 中的循环变量i相当于父作用域 for (let i = 0; i < 3; i++) { let i = 'v'; console.log(i); // v v v }
//3.let 所声明的变量一定要在声明后使用 let a = 10; console.log(a); // 10 console.log(v); //v is not defined let v = 1;
// 4.let 不允许重复声明 let a = 10; let a = 1; //console.log(a); //'a' has already been declared
// 5. let 定义块级作用域 function fn() { let n = 5; if (true) { let n = 10; } console.log(n); // 5 } fn()
// const 声明一个只读常量 const PI = 3.1415; console.log(PI) PI = 3; console.log(PI) // Assignment to constant variable.
//const实际上保证的,并不是变量的值不得改动,而是变量指向的那个内存地址不得改动。 const foo = {}; // 为 foo 添加一个属性,可以成功 foo.prop = 123; foo.prop // 123 // 将 foo 指向另一个对象,就会报错 foo = {};