刚学 JS 没多久,想问大家一个问题: 首先定义 obj = {a:1,b:2} 一般 let a = obj.a 可以简写成 let {a} = obj,我就想了一下 let {a} = obj 相当于 let {a:a} = obj 然后 let {a:a} = obj 相当于 let {a:a} = {a:1,b:2} 这一步应该是解构赋值,所以 a = 1
我的疑问是前一步:let {a} = obj 相当于 let {a:a} = obj ; 这里的{ a:a }为啥可以简写成{ a }呢?
1
mchl 2017-10-12 12:46:47 +08:00 via Android
|
2
mchl 2017-10-12 12:59:56 +08:00 via Android
不是简写,如果 obj 里没有 a,那就是默认值
|
3
cuzfinal 2017-10-12 13:44:29 +08:00 via Android
解构赋值,还有 let[a]=array 呢
|
4
ie88 2017-10-12 14:04:36 +08:00
这个称作 Shorthand property names [ES2015]
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Object_initializer |
5
cin 2017-10-12 14:06:15 +08:00
|
6
Elven 2017-10-12 15:32:30 +08:00 via iPhone
es6 的特性,看着舒服写着方便
|
7
lianyue 2017-10-12 15:51:38 +08:00 via iPhone
第二个 a 是用于重命名 比如 let {a:q} = obj
变量名是 q 变量名相同可以省略不写 |
8
milklee 2017-10-12 16:34:18 +08:00
这就相当于问“你为什么姓王?”这样的问题一样——因为这都是别人规定的 😂
|
9
nearly1 OP 谢谢各位的回答
|