es6中的关于对象的解构赋值

不废话,上代码

var obj = {
    p: [ 'Hello',
    { y: 'World' } ]
};

var { p: [x, { y }] } = obj; x // "Hello"
y // "World"

上面代码是es6标准入门中关于对象解构赋值的一个例子,书中对此段代码的解释是 此时p是模式,p并不会被赋值,

var node = { loc: {
    start: { line: 1,
    column: 5 }    
    } };
var { loc: { start: { line }} } = node; line // 1
loc // error: loc is undefined
start // error: start is undefined

上面代码中,只有line是变量,loc和start都是模式,不会被赋值

但是

var { foo: baz } = { foo: 'aaa', bar: 'bbb' }; baz // "aaa"

中的foo确实被baz赋值了

可是

let baz;
({bar: baz} = {bar: 1}); 

这段代码输入的仍然是bar//1

求问这是为什么啊?

阅读 2.8k
2 个回答

没看懂你的问题点是什么?
let baz;
({bar: baz} = {bar: 1});
运行完这句代码之后,bza就是1了呀 不存在bar这个变量呀

你运行错了吧,bar为undefined

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题