一、课程名称:前端工程师2022版
二、课程章节:ES6基础入门-解构赋值(4-1 其它数据类型的解构赋值-慕课网体系课 (imooc.com))
三、课程讲师:Alex
四、课程内容:
其他数据类型的解构赋值
实际上,解构赋值只有两种,一种是数组的形式,一种是对象的形式,所以其特殊类型的解构赋值就会采取这其中的一种
1、字符串的解构赋值
既可以使用数组的形式,也可以使用对象的形式解构赋值
1)使用数组的形式:const [a, b, , , c] = "hello";
2)使用对象的形式:const { 0: a, 1: b, 4: c, length } = "hello";
2、数值和布尔值的解构赋值(不常用)
只能按对象的形式解构赋值,且需设置默认值才生效。此外,数值和布尔值进行解构赋值不是为了得到这个数值或布尔值,程序的具体操作是先将等号右边的值转为对象,即将数值转为包装对象(即通过Number实例化一下,可以解构到toString,底层原理会将其转为对象),但这个对象中既没有属性,也没有方法(继承来的方法除外)。因此无法对等号左边的变量进行赋值,即无法获得右边的数值或布尔值,此时会直接使用设置的默认值作为结果
// 先将等号右边的值转为对象
// 数值的解构
console.log(new Number(123));
const { a = 1, toString } = 123;
console.log(a, toString); //1 ƒ toString() { [native code] }
// 布尔值的解构
const { b = 2, toString } = true;
console.log(b, toString); //2 ƒ toString() { [native code] }
3、undefined和null的解构赋值
undefined和null没有对应的包装对象,所以无法通过它们转换成相应的对象,对它们进行解构赋值,都会报错
const { toString } = null; //报错
const { toString } = undefined; //报错
五、课程心得:
今天学习了其他数据类型的解构赋值,刚开始稍微有一点搞不懂这几种类型的解构赋值,后来去浏览了问答区,发现很多小伙伴也有同样的困惑,老师们也作了详细的解答,最后终于搞懂了这一块的知识点,接下来继续加油!