問題タブ [destructuring]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - タプル要素を分割代入で入れ替える
次のように、破壊割り当てを使用して、タプルの要素をその場で交換することを考えました。
ただし、これにより が得られ[1, 1]
ます。
Babel はこれを次のようにコンパイルします。
これは次のようにコンパイルする必要があると思っていたでしょう
Traceur は、babel と同じように動作します。だから私はこれが指定された動作だと思いますか?
2 つの要素をその場で交換したい。唯一の方法です...
しかし、上記のことは、破壊的な代入が私がしなければならないことを回避できるはずのものだと思いました。
私は配列の 2 つの要素の順序を完全に逆にすることができるので、それは私の質問ではありません。のような単純なことを行うことができますa.push(a.shift())
。これは、スワッピングがインプレースであるという基準を満たしています。
ここで私が最も興味を持っているのは、なぜ分解が本来あるべきように機能しないのかということです。
javascript - オブジェクト分解構文 - ES6
私はよく理解されている配列の構造化構文を経験していました。
私たちが言うとき、私たちは以下で正確に何をしていますvar {p, q} = o;
か?
and inは、 ie、andのプロパティp
とq
はvar {p, q}
異なりますか? もし、そうなら、o
'p'
'q'
なぜvar {a, b} = o;
機能しないのですか?
*注: 辞書のキーは JavaScript の文字列リテラルであることを知りました。*
arrays - 配列を分解するときの型
そのようなことを書くことは可能ですか?
javascript - chrome/chromium 44 の destructuring ステートメントが認識されない
私の知る限り、これは有効な EcmaScript6 です。
Firefox はこのコードを問題なく実行しますが、Google Chrome と Chromium の両方で次のエラーが発生します。
Firefox では、これを機能させるには type 属性でスクリプト タグに「version=1.7」のフラグを付ける必要がありますが、Google Chrome ではスクリプトが無視されます。通常のスクリプト タグでは、このエラーが発生します。
これは、この機能が Google Chrome に実装されていないということですか? または、何か不足していますか?
javascript - Babel の ES6 オブジェクト分解の実装は正しいですか?
したがって、基本的なデスクチャリングは問題なく、{a, b} = obj
トランスパイルはa = obj.a; b = obj.b
.
私の質問は、偶然出くわした少し奇妙な構文に関するもので、見つからないので誰かが仕様を教えてくれるかどうか疑問に思っています:
それは 2 つa
のb
代入を行い、次に戻りますobj.c
。私が書くことができるように、実際にはバイトストリームデコーダーにとって非常に便利です。
私の問題は、この構文をどこにも見たことがなく、間違って実装されているか、提案段階にあるものに依存したくないということです。
javascript - クラスコンストラクターでのES6破壊
これはばかげているように聞こえるかもしれませんが、我慢してください。コンストラクターでオブジェクトをクラスプロパティに分解するための言語レベルでのサポートがあるかどうか疑問に思います。
compiler-errors - Typescript での構造化解除により、コンパイラ エラー TS1008 および TS1005 が発生する
タイプスクリプト、サンプルコードで構造化を使用したい:
私のコンパイルコマンドtsc --t es5 destructuring.ts
、
タイプスクリプト版1.6.2
、
IDE はvs code
.
次に、3 つのエラーが発生します。
destructuring.ts(1,5): error TS1008: Unexpectedtoken; 'identifier' expected.
destructuring.ts(1,21): error TS1008: Unexpected token; 'module, class, interface, enum, import or statement' expected.
destructuring.ts(1,45): error TS1005: ';' expected.
;
私のデスクトップ(ウィンドウ8.1 x64)では、コマンドnpm -g list
、ショーtypescript@1.6.2
、およびコマンド tsc --version
ショーVersion 1.0.3.0
:
しかし、私のラップトップ(Windows 7 x64)では、コマンドは次のようにtsc --version
表示されmessage TS6029: Version 1.6.2
ます: