ES6 12.27

88 阅读1分钟

1.var变量的提升,let不会
2.let不允许重复声明
3.let存在块级作用域,仅在声明的范围内起作用
4.let存在暂时性死区,优先找当前作用域
5.const除了let的所有属性外,不允许修改
6.const声明常量时必须同时赋值

var a=1;
console.log(a);
// var 没有块级作用域,没有变量提升

var a;
console.log(a);
a=1;
// 变量提升

let a=0;
{
console.log(a);
let a=1;
}
// 暂时性死区,优先找当前作用域

let {foo , bar} = {foo:"bbb",foo:"aaa"};
console.log(foo , bar);
根据属性名解析内容,区分大小写

对象的结构赋值 var json={
aaaaname:"张三",
eat:function(){
console.log("吃饭了");
},
sex: undefined
}
const {aaaaname:name, sex="男", eat} = json; // aaaaname:name 别名用于简化,可以避免出现重复 eat(); // 还可以解析函数
console.log(name, sex);

let arr = [1,2,3]; // 对象结构,找属性名 数组找下标
let {0: first, 2: last} = arr;
console.log(arr);

函数参数结构赋值
function sum([a=0,b=0]=[]){
console.log(a + b);
}
sum(); // []数组结构 {}对象结构

用途 交换变量的值 面试题
let x = 1;
let y = 2;
[x, y] = [y, x];