网站首页 » 前端开发 » 《ES6 标准入门》学习笔记(第三章:变量的解构赋值)
上一篇:
下一篇:

《ES6 标准入门》学习笔记(第三章:变量的解构赋值)

《ES6 标准入门》的第三章主要讲的是变量的解构赋值,这里也没什么特别难的地方。只要足够细心,基本都能理解。

《ES6 标准入门》学习笔记(第三章:变量的解构赋值)

对于数组的结构赋值,等号左则的模式只匹配等号右边数据的一部分时,解构还可以成功的;如果等号左则的模式变量多于等号右则的数组长度时也依然可以解构成功,只不过按顺序依次赋值后,没有得到值的就为undefined。不妨看几个例子:

看这里
// 右则超值情况
let [a,b,c] = [1,2,3,4,5,6];
console.log(a); // 1
console.log(b); // 2
console.log(c); // 3

// 右则缺值情况
let [a,b,c] = [1];
console.log(a); // 1
console.log(b); // undefined
console.log(c); // undefined

数组嵌套数组的情况同样适用上面的规则。

对象的解构赋值得分清楚是匹配模式还是变量。

看过来
let {first:temp} = {first:"abc",second:"def"}
console.log(temp); // abc
console.log(first); // Uncaught ReferenceError: first is not defined
// first 是匹配的模式,temp 才是变量。

匹配的模式相当于右边对象的属性,即要通过它来找到给赋给变量 temp  的值(abc)。除此之外,对象的解构也可以设置默认值。默认值生效的条件是,对象的属性值严格等于undefined。如果是null 那么默认值也不会生效。

看这里
let{ a=3 } = { a:undefined }
console.log(a); // 3

let{ a=3 } = { a:null }
console.log(a); // null

let{ a=3 } = { a:1 }
console.log(a); // 1

数值和布尔值的解构赋值就还没搞明白,书中这样写想表达的是什么意思,

为什么???
let {toString: s} = 123;
console.log(s === Number.prototype.toString); //true

let {toString: s} = true;
console.log(s === Boolean.prototype.toString); //true

我猜:只是想说明等号右边是数值和布尔值,则会先转为对象,这一句话吧!但这样的解构有什么用处,目前还没发现,并且打印出 s 的值并不是想象中的 123,而是一串:ƒ toString() { [native code] } 代码 ,顿时觉得整个人都不好了。

 

  • 微信扫一扫,赏我

  • 支付宝扫一扫,赏我

声明

原创文章,不经本站同意,不得以任何形式转载,如有不便,请多多包涵!

本文永久链接:http://yunkus.com/es6-primer-notes-part3/

Leave a Reply

Your email address will not be published. Required fields are marked *

评论 END