gpt4 book ai didi

javascript - JavaScript 中解构赋值的顺序有保证吗?

转载 作者:行者123 更新时间:2023-12-03 10:03:04 25 4
gpt4 key购买 nike

是否保证解构赋值的顺序是从左到右?例如,在这段代码中:

[ curItem.props, curItem ] = foo(curItem)

其中 foo 返回一个包含两个值的数组。

curItem.props 的赋值是否保证在 curItem 的赋值之前发生?

根据我对标准的阅读,确实如此,但这是一个很难阅读的标准..

最佳答案

是的,它由 Runtime Semantics: IteratorDestructuringAssignmentEvaluation 保证, 特别是制作

AssignmentElementList: AssignmentElementList , AssignmentElisionElement

它首先递归地评估目标表达式左侧的赋值(直到它到达空列表),然后是列表中的最后一个元素(跳过省略元素)。所以在你的例子中 [ curItem.props, curItem ] , curItem.propscurItem 之前评估并分配引用引用。

然而有趣的是,= 左侧的整个表达式使用解构语法时,运算符在右侧之后求值,这与正常赋值目标的严格从左到右求值形成对比。在

[ curItem.props ] = foo(curItem)

curItem.propsfoo 之后 评估引用打电话,而在

curItem.props = foo(curItem)[0]

它在之前被评估。参见 §12.15.4 .

关于javascript - JavaScript 中解构赋值的顺序有保证吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60829955/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com