ES6小结
es6介绍
即ECMAscript6.0, 又称ECMAscript2015, 简称ES6.
1. let const声明
在es6之前, js声明变量都是使用var, 但是var存在一些问题,例如作用域的问题...
let声明, 是块级作用域, 可以在不影响外部变量的情况下声明具有相同名称的新变量
var a = 'ffff';
{
let a = 1;
console.log(a); //1
}
console.log(a); //ffff
所以 用它可以解决js一道经典面试题:
for(var i=1; i<9; i++){
setTimeout(()=>{console.log(i);},1000)
}
// 9 9 9 9 9 9 9 9
如果将var 换成 let , 则会为每一次循环创造一个独立的作用域, 好比:
{let i=1; setTimeout(()=>{console.log(i)},1000)} //1
{let i=2; setTimeout(()=>{console.log(i)},1000)} //2
{let i=3; setTimeout(()=>{console.log(i)},1000)} //3
{let i=4; setTimeout(()=>{console.log(i)},1000)} //4
//......
它们之间另一个区别就是: 变量提升问题, let不会像var一样被提升.
console.log(a); //undefined
console.log(b); //ReferenceError
var a = '1';
let b = '2';
es6里面用const 来声明一个常量, 例如:
{
const a = "ffff";
console.log(a); //ffff
c = 1; //TypeError
}
const不会使变量不可变, 只是锁定它的赋值! 如果你用复杂的对象或数组来赋值, 那么该值是可以修改的, 比如:
{
const a = [1,2,3];
a.push(4);
console.log(a); //[1,2,3,4]
const b = {name:'web',age:'25'};
b.job = "web developer";
console.log(b); //{name:'web',age:'25',job:'web developer'}
}
未完待续....