8

したがって、基本的なデスクチャリングは問題なく、{a, b} = objトランスパイルはa = obj.a; b = obj.b.

私の質問は、偶然出くわした少し奇妙な構文に関するもので、見つからないので誰かが仕様を教えてくれるかどうか疑問に思っています:

({a, b} = obj).c

それは 2 つab代入を行い、次に戻りますobj.c。私が書くことができるように、実際にはバイトストリームデコーダーにとって非常に便利です。

let width = ({bytes} = intDecode(bytes)).number;

私の問題は、この構文をどこにも見たことがなく、間違って実装されているか、提案段階にあるものに依存したくないということです。

4

2 に答える 2

3

=Destructuring Assignment には特別なことはありません。演算子を使用した他の代入と同じように評価されます。

したがって、 が返されますrval

つまり、構文に依存できます。

いくつかの詳細:

Destructuring Part は6[ 1 ]で評価されます。

を引数としてstatus実行した結果とする。DestructuringAssignmentEvaluationassignmentPatternrval

そして、この項目の後、例のように、割り当ての評価が通常どおりに行われa = b = 42;ます。

参考文献:

于 2015-09-03T07:57:19.803 に答える