//! 实际开发中,解构失败后会给变量一个undefined值。这个值不能参加其他的元素。 //! 因此,在解构的时候可以指定默认值,这样解构失败后参加运算也不会出现意外的结果 //! 解构的时候 一定注意:对象的解构赋值 null和undefined值是不可以解构 //! 基本数据类型 number bool string 可以,底层会将这些基本的数据类型 转换成 对象,在去解构。 var { a } = {}; console.log(a); console.log(a + 1); console.log(a + 'hehe'); // 下面代码就是在解构时指定变量b的默认值为0,如果解构失败,就会使用该默认值。 // 只有解构时变量的值 严格等于(===)undefined 才算是解构失败 var { b = 0 } = {}; console.log(b); // 0 console.log(b + 1); // 1 var [c = 10] = []; var [d = 10] = [0]; var [e = 20] = [null]; var [f = 100] = [undefined]; console.log(c); // 10 console.log(d); // 0 console.log(e); // null console.log(f); // 100 function sum([x = 0, y = 0]) { return x + y; } console.log(sum([])); // 0 //! 基本数据类型 对应 都有自己的 对象类型 // 数字 number var a = 1; // 对应对象类型 new Number(1) console.log(new Number(1)); console.log(new String('string')); console.log(new Boolean(true)); //! 扩展:字符串 存储逻辑和数组相似 因此字符串也可以像数组那样解构 var [a, b] = 'string'; console.log(a, b); // s t