問題タブ [ecmascript-6]
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 - 最新のブラウザーでの TypeScript のサポート
TypeScript に関連する広告情報をいくつか読みましたが、この JavaScript のスーパーセットについては経験がありません。だから私はいくつかの基本的な質問があります:
最新のブラウザーによるネイティブ TypeScript サポートの状況は?
TypeScript のネイティブ サポートに対する主要なブラウザー ベンダーの立場は?
TypeScript と ECMAScript6 の関係は何ですか? TypeScript は ECMAScript6 よりもはるかに多くの機能を提供しますか?
すべての質問または一部の質問に自由に回答してください。
javascript - ECMAScript 6 で矢印関数を使用する必要があるのはいつですか?
とES6() => {}
でfunction () {}
関数を記述する 2 つの非常によく似た方法が得られます。他の言語では、ラムダ関数は匿名であることで区別されることがよくありますが、ECMAScript では、どの関数も匿名にすることができます。2 つのタイプのそれぞれに固有の使用ドメインがあります (つまり、this
明示的にバインドする必要があるか、明示的にバインドしない必要がある場合)。これらのドメインの間には、どちらの表記法でも対応できる膨大な数のケースがあります。
ES6 のアロー関数には、少なくとも 2 つの制限があります。
- を使用しないでください
new
。作成時には使用できませんprototype
this
初期化時のスコープへのバインドを修正
これらの 2 つの制限は別として、アロー関数は理論的にはほとんどどこでも通常の関数を置き換えることができます。実際にそれらを使用する正しいアプローチは何ですか? アロー関数を使用する必要があります。例:
- 「どこでも機能する」、つまり、関数が
this
変数にとらわれない必要はなく、オブジェクトを作成していません。 - 特定のスコープにバインドする必要がある「必要な場所」、つまりイベントリスナー、タイムアウトのみ
- 「短い」関数を使用するが、「長い」関数を使用しない
- 別のアロー関数を含まない関数のみ
ECMAScript の将来のバージョンで適切な関数表記を選択するためのガイドラインを探しています。ガイドラインは、チーム内の開発者に教えられるように明確にする必要があります。また、ある関数表記から別の関数表記へと頻繁にリファクタリングする必要がないように、一貫性がある必要があります。
この質問は、今後の ECMAScript 6 (Harmony) のコンテキストでコード スタイルについて考えたことがある人、およびこの言語を既に使用したことがある人に向けられています。
javascript - Promise の実装は仕様に準拠していますか?
現在の仕様に準拠する Typescript の promise 実装 (実際にはポリフィル) を作成しようとしています (これらのhttp://promises-aplus.github.io/promises-spec/を使用しました)。
コードはhttps://gist.github.com/ilmattodel93/dbefa9eb86715f76e10eにありますが、仕様の 2.2.7 サブポイントを理解できません。レースとすべての静的メソッドのみが欠落している必要があります。
誰かが2.2.7のサブポイントを説明して、それらを正しく実装したかどうか教えてください。
注意と時間をありがとう、マティア。
javascript - "function* ()" のような関数定義の星印は何を意味しますか?
他のjsコードでその形式の定義を見つけたばかりですが、星は実際にはどういう意味ですか? ありがとう
javascript - javascriptで定数オブジェクトを変更できるのはなぜですか
ES6 がまだ標準化されていないことは承知していますが、現在多くのブラウザー const
が JS のキーワードをサポートしています。
仕様では、次のように書かれています。
定数の値は再代入によって変更できず、定数を再宣言することはできません。このため、定数を初期化せずに宣言することはできますが、そうしても無駄です。
そして、私がこのようなことをすると:
私はすべてが大丈夫だxxx
と6
思いyyy
ます[]
.
しかし、そうするとyyy.push(6); yyy.push(1);
、定数配列が変更されました。今[6, 1]
のところ、まだ変更できませんyyy = 1;
。
これはバグですか、それとも何か不足していますか? 最新のクロームとFF29でやってみた
ecmascript-harmony - 以下の ES6 クラスで、goFast() が機能するのはなぜですか?
私はES6についてもっと学びたいと思っており、チュートリアルでこのクラスを見ました。の前にキーワードがgoFast()
なくても機能するのはなぜですか? function
これはクラス内の関数の新しい短縮形ですか、それとも…?
javascript - EcmaScript 6 における yield の優先順位
build
オブジェクトを同期的に返す関数があり、それには function が含まれていますrun
。yield
この関数はサンクを返すため、や などのライブラリを使用して呼び出すことができますco
。
基本的に、呼び出しは次のようになります。
さて、問題は、 がではなく をyield
参照していることを確認したいということです。次のスニペットのように一時変数を導入せずに、どうすればそれを行うことができますか?run
build
何か案は?
PS: 「--harmony」フラグを使用して Node.js 0.11.x でこのコードを実行しています。
javascript - オブジェクトの設定可能属性と書き込み可能属性の違い
javascript、オブジェクトデータプロパティ属性に関して次を見ました
— 構成可能: プロパティを削除または変更できるかどうかを指定します。
— Enumerable: for/in ループでプロパティを返すことができるかどうかを指定します。
— 書き込み可能: プロパティを変更できるかどうかを指定します。
ここで、「構成可能」と「書き込み可能」は同じもの (プロパティを変更できるかどうか) を表しているのに、なぜ 2 つの別個の属性が必要なのでしょうか?