在解构范围内分配价值?

时间:2018-10-03 07:22:17

标签: javascript reactjs ecmascript-6

我熟悉解构的概念……又名:

const { name } = student // assigns a variable named name with the value of student.name

但是,今天我看到销毁内部的任务看起来很困惑,我感到困惑。又名:

constructor(props) {
    super(props);

    const {tabs = [{name : null}]} = props;

    const firstTab = tabs[0];

    this.state = {
        currentTab : firstTab.name
    } ;
}

我不了解这部分,const { tabs = [{name : null}] } = props。有人可以帮忙解释一下这种语法吗?

1 个答案:

答案 0 :(得分:1)

[ { name: null } ]没有属性props时,这是将制表符的默认值设置为tabs的一种奇特的方式

示例:

// When props.tabs === undefiend
let props = { param1: "param1" };
let { tabs = [{ name : null }] } = props;
console.log(tabs); // returns [{ name: null }]

// when props.tabs !== undefined
let props = { tabs: [{name: "param2"}, {name: "param3"}] };
let { tabs = [{ name : null }]} = props;
console.log(tabs) // returns [{name: "param2"}, {name: "param3"}]

关于此默认值分配的好处是,它使错误代码更少。当下一行代码运行时如果您未设置默认分配,则const firstTab = tabs[0]; tabs[0]会崩溃。