解构赋值
一 .对象解构
【 基本 】
javascript">let node = {
type: "Identifier",
name: "foo"
};
let { type, name } = node;
console.log(type); // "Identifier"
console.log(name); // "foo"
【 解构赋值 】
let node = {
type: "Identifier",
name: "foo"
},
type = "Literal",
name = 5;
// 使用解构来分配不同的值
({ type, name } = node); //花括号不能在表达式左侧因为会被当作块级作用域执行导致语法出错,所以括号括起来
console.log(type); // "Identifier"
console.log(name); // "foo"
function outputInfo(value) {
console.log(value === node); // true
}
outputInfo({ type, name } = node);
【[ 默认值 】
let node = {
type: "Identifier",
name: "foo"
};
let { type, name, value = true } = node;
console.log(type); // "Identifier"
console.log(name); // "foo"
console.log(value); // true
【 为非同名局部变量赋值 】
let node = {
type: "Identifier"
};
let { type: localType, name: localName = "bar" } = node;
console.log(localType); // "Identifier"
console.log(localName); // "bar"
【 嵌套对象解构 】
let node = {
type: "Identifier",
name: "foo",
loc: {
start: {
line: 1,
column: 1
},
end: {
line: 1,
column: 4
}
}
};
let { loc: { start }} = node;
let { loc: { start: start2 }} = node;
console.log(start.line); // 1
console.log(start2); // 1