结构赋值操作基础说明

156 阅读1分钟

1.代码段1

{100:a=100} = {101:a=111}    //输出 {101:111}  a=100
{101:a=100} = {100:(a=111),101:a=112} //输出 {100: 111, 101: 112}  a=112

解释:

{ 100: a=1 }整体的,是一个赋值模板(解构赋值的模板)的声明,是声明语法,不是执行。它就是声明了属性名100对应于一个变量名a。所以才有{ 100: a } = x的语法效果将是a = x[100]。注意,对于左侧的赋值模板来说,是“声明”语义,而不是“执行”。 所以在代码{ 100 : a = 1 }中,a = 1缺省值“声明”。因此,对于代码{ 100: a = 1} = x来说,当x[100]这个属性不存在的时候,a使用缺省值1,就ok了啊。所以你参考两个foo()声明中,a = 1的语义解释是完全一样的:

function foo(a = 1) { ... }
function foo({100: a = 1}) { ... }