javascript - ES6语法问题
怪我咯
怪我咯 2017-04-11 11:19:44
[JavaScript讨论组]

最近详细研读阮一峰的es6入门这本书,在读到解构这一章时,里面嵌套赋值有这样的一个例子:

let obj = {};
let arr = [];

({ foo: obj.prop, bar: arr[0] } = { foo: 123, bar: true });

obj // {prop:123}
arr // [true]

这个例子我在chrome控制台运行没有问题,但是我之前没有见过这样的写法,为什么
{foo: obj.prop, bar: arr[0]} = {foo: 123, bar: true}
这样的写法要带一个括号才行,不带就会报错: Uncaught SyntaxError: Unexpected token =
请知道的解答一下疑惑,谢谢。

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(1)
阿神

回答完已经看到答案了,这个答案可以忽略了


我猜:

如果不带括号,左边被认为是一个对象字面量,给对象字面量赋值当然是错的。

但是带了括号,整个赋值就被认为是解构赋值了……

具体啥原因我也没明白,我认为两种情况都是形式上正确的表达式,都应该能正确识别才对,不清楚不带括号的时候是不是会引起歧义,可能需要去 SPEC 里找找答案。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号