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


求问这是为什么啊?


凤凰求蛊
浏览 507回答 1
1回答

慕少森

没看懂你的问题点是什么?let baz;({bar: baz} = {bar: 1}); 运行完这句代码之后,bza就是1了呀 不存在bar这个变量呀
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript