
刚学 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 日 via Android |
2 mchl 2017 年 10 月 12 日 via Android 不是简写,如果 obj 里没有 a,那就是默认值 |
3 cuzfinal 2017 年 10 月 12 日 via Android 解构赋值,还有 let[a]=array 呢 |
4 ie88 2017 年 10 月 12 日 这个称作 Shorthand property names [ES2015] https://developer.mozilla.org/en-US/docs/Web/Javascript/Reference/Operators/Object_initializer |
5 cin 2017 年 10 月 12 日 |
6 Elven 2017 年 10 月 12 日 via iPhone es6 的特性,看着舒服写着方便 |
7 lianyue 2017 年 10 月 12 日 via iPhone 第二个 a 是用于重命名 比如 let {a:q} = obj 变量名是 q 变量名相同可以省略不写 |
8 milklee 2017 年 10 月 12 日 这就相当于问“你为什么姓王?”这样的问题一样因为这都是别人规定的 |
9 nearly1 OP 谢谢各位的回答 |