一.字符串的解构赋值
1.以数组形式解构赋值
const [a, , , b, c] = 'hello'; console.log(a, b, c);//h l o
2.以对象形式解构赋值
// 为什么字符串可以按照对象形式解构赋值 因为包装类,任何一个直接写的字符串都相当于是new String()出来的:打印str如图 //const str = 'hello'//等价于下面
const str = new String('hello'); console.log(str); const { 0: a, 1: b, length } = str;//解构赋值
console.log('hello'.hasOwnProperty('length'));//true 字符串本身就有length属性 console.log(a, b,length);//h e 5
打印str:{0:'h',1:'e',2:'l',3:'l',4:'o',length:5}
这也可以解释字符串可以通过str[序号]访问字符
二.数值和布尔值的解构赋值:(将数值,布尔自动转换为对象)
const { hasOwnProperty, toString } = true;//相当于以下 // const {hasOwnProperty} = new Boolean(true);//程序内部会自动把true转为对象 对象的解构赋值是可以取到继承的属性(其原型链上所有原型的属性和方法) console.log(new Boolean(true)); console.log(hasOwnProperty);//ƒ hasOwnProperty() console.log(toString);//toString()
打印new Boolean(true)
三角关系:
数值型同理,就不一一举例;
三.undefined和null没有包装类,无法转为对象,没有三角关系原型链,也不能对其解构赋值会报错;
四.解构赋值的实际应用
函数返回多个值一般用数组或者对象,再用解构赋值可以方便取出里面的值;
标签:ES6,console,log,数据类型,解构,str,const,赋值 From: https://www.cnblogs.com/zhoushangquan/p/17037427.html