老师,这两种情况为什么得到的结果不一样?
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>let 和 const 是什么</title>
</head>
<body>
<script>
{
const {
toString = 123
} = {};
console.log(toString);
// ƒ toString() { [native code] }
}
{
const {
toString = 123
} = {
toString: undefined
};
console.log(toString);
// 123
}
</script>
</body>
</html>
相关截图:
问题描述:
右侧同样是严格等于undefined
上面的取得值是内置的toString方法,下面却取到了默认值123
我的理解最后结果都应该是123,为什么结果不一样呢?
31
收起
正在回答
1回答
同学你好,二者不一样,如下:
1、 const {toString = 123} = {}这样写,是对空对象{}进行解构,由于{}里面没有toString属性,此时对象原型上的属性也会参与解构。由于{}原型上有toString方法:
所以能拿到该方法,因此结果如下:
2、const {toString = 123} = {toString: undefined}这样写,等号右侧的对象中有toString属性,此时就会优先解构对象自身的属性,而不会解构对象原型上的toString。由于对象的toString的值是undefined,所以会是使用默认值123。
祝学习愉快!
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星