タグ付けされた質問 「ecmascript-6」

ECMAScript仕様の2015バージョン。現在は標準(ECMAScript 2015)。このタグは、質問がECMAScript 2015で提供される新機能または技術変更に特に関連する場合にのみ使用してください。

30
「let」と「var」の違いは何ですか?
ECMAScript 6 はletステートメントを導入しました。 「ローカル」変数として記述されていると聞きましたが、varキーワードとどのように異なる動作をするのかはまだよくわかりません。 違いは何ですか?いつlet使用すべきvarですか?

26
(a == 1 && a == 2 && a == 3)は真と評価できますか?
この投稿を改善してみませんか?この質問に対する詳細な回答を提供してください。これには、引用や、回答が正しい理由の説明が含まれます。詳細が不十分な回答は編集または削除される場合があります。 モデレーターへのメモ:コードを編集したい、またはこの通知を削除したいという衝動に抵抗してください。空白のパターンは問題の一部である可能性があるため、不必要に改ざんしないでください。「ホワイトスペースは重要ではない」陣営にいる場合は、コードをそのまま受け入れることができるはずです。 JavaScriptで(a== 1 && a ==2 && a==3)評価できる可能性trueはありますか? 大手テック企業からのインタビューです。それは2週間前に起こりましたが、私はまだ答えを見つけようとしています。日々の仕事でそのようなコードを書くことは決してないことは知っていますが、私は興味があります。

10
Node.jsの使用には、ES6のインポート/エクスポートが必要です。
私が共同で取り組んでいるプロジェクトでは、使用できるモジュールシステムについて2つの選択肢があります。 を使用してモジュールをインポートしrequire、およびを使用module.exportsしてエクスポートしexports.fooます。 ES6を使用したモジュールのインポートimport、およびES6を使用したエクスポートexport どちらを使用してもパフォーマンス上のメリットはありますか?ノードモジュールでES6モジュールを使用する場合に知っておくべきことは他にありますか?

10
ES6のインポートに中括弧を使用する必要があるのはいつですか?
当たり前のようですが、ES6で単一のモジュールをインポートするときに中括弧を使用する場合について、少し混乱しました。たとえば、私が取り組んでいるReact-Nativeプロジェクトには、次のファイルとそのコンテンツがあります。 initialState.js var initialState = { todo: { todos: [ {id: 1, task: 'Finish Coding', completed: false}, {id: 2, task: 'Do Laundry', completed: false}, {id: 2, task: 'Shopping Groceries', completed: false}, ] } }; export default initialState; TodoReducer.jsでは、中括弧なしでインポートする必要があります。 import initialState from './todoInitialState'; initialState中括弧で囲むと、次のコード行で次のエラーが発生します。 未定義のプロパティtodoを読み取れません TodoReducer.js: export default function todos(state = …

6
オブジェクトを返すECMAScript 6アロー関数
アロー関数からオブジェクトを返す場合、文法が曖昧であるため、追加のセット{}とreturnキーワードを使用する必要があるようです。 つまり、私は書くことができませんp => {foo: "bar"}が、書かなければなりませんp => { return {foo: "bar"}; }。 arrow関数がオブジェクト以外のものを返す場合、{}およびreturnは不要ですp => "foo"。例:。 p => {foo: "bar"}を返しますundefined。 変更されたものp => {"foo": "bar"}は「SyntaxError:予期しないトークン: ' :'」をスローします。 私が見逃している明らかなものはありますか?



3
「矢印関数」と「関数」は同等/交換可能ですか?
ES2015の矢印関数は、より簡潔な構文を提供します。 関数の宣言/式をすべて矢印関数に置き換えることはできますか? 何に注意する必要がありますか? 例: コンストラクター関数 function User(name) { this.name = name; } // vs const User = name => { this.name = name; }; プロトタイプの方法 User.prototype.getName = function() { return this.name; }; // vs User.prototype.getName = () => this.name; オブジェクト(リテラル)メソッド const obj = { getName: function() { // ... } …

14
ES6クラス変数の代替
現在、ES5では、フレームワークで次のパターンを使用してクラスとクラス変数を作成しています。これは快適です。 // ES 5 FrameWork.Class({ variable: 'string', variable2: true, init: function(){ }, addItem: function(){ } }); ES6では、ネイティブでクラスを作成できますが、クラス変数を持つオプションはありません。 // ES6 class MyClass { const MY_CONST = 'string'; // <-- this is not possible in ES6 constructor(){ this.MY_CONST; } } 悲しいことに、クラスにはメソッドしか含めることができないため、上記は機能しません。 できることthis.myVar = trueは理解していconstructorますが、特に大きなクラスに20〜30以上のパラメーターがある場合は、コンストラクターを「ジャンク化」したくありません。 私はこの問題を処理する多くの方法を考えていましたが、まだ良いものを見つけていません。(例:ClassConfigハンドラーを作成parameterし、クラスとは別に宣言されているオブジェクトを渡します。次に、ハンドラーがクラスにアタッチされます。WeakMapsどういうわけか、統合することも考えていました。) この状況に対処するには、どのようなアイデアが必要ですか?


13
JavaScriptの「=>」(等しいとより大きいで構成される矢印)の意味は何ですか?
>=演算子の意味がそれ以上であることは知っていますが=>、いくつかのソースコードで見たことがあります。その演算子の意味は何ですか? これがコードです: promiseTargetFile(fpParams, aSkipPrompt, relatedURI).then(aDialogAccepted => { if (!aDialogAccepted) return; saveAsType = fpParams.saveAsType; file = fpParams.file; continueSave(); }).then(null, Components.utils.reportError);


11
Node.js-SyntaxError:予期しないトークンのインポート
何が悪いのか分かりません。ノードv5.6.0 NPM v3.10.6 コード: function (exports, require, module, __filename, __dirname) { import express from 'express' }; エラー: SyntaxError: Unexpected token import at exports.runInThisContext (vm.js:53:16) at Module._compile (module.js:387:25) at Object.Module._extensions..js (module.js:422:10) at Module.load (module.js:357:32) at Function.Module._load (module.js:314:12) at Function.Module.runMain (module.js:447:10) at startup (node.js:140:18) at node.js:1001:3

11
非同期/待機関数を並行して呼び出す
私が理解している限り、ES7 / ES2016では、複数awaitのをコードに入れることは、promiseのチェーン.then()と同様に機能します。つまり、それらは並列ではなく、次々に実行されます。したがって、たとえば、次のコードがあります。 await someCall(); await anotherCall(); が完了したanotherCall()ときにのみ呼び出されることを正しく理解していsomeCall()ますか?それらを並行して呼び出す最もエレガントな方法は何ですか? Nodeで使用したいので、非同期ライブラリを使用した解決策はありますか? 編集:私はこの質問で提供されている解決策に満足していません:非同期ジェネレーターでのプロミスの非並行待機によるスローダウン、ジェネレーターを使用しているため、より一般的なユースケースについて質問しています。

9
ECMAScript 6でアロー関数を使用する必要があるのはいつですか?
質問は、来たるECMAScript 6(ハーモニー)のコンテキストでコードスタイルについて考え、すでに言語を使用したことがある人を対象としています。 () => {}し、function () {}我々はES6で関数を作成するには、2つの非常に類似した方法を取得しています。他の言語では、ラムダ関数は匿名であることで区別されることがよくありますが、ECMAScriptでは任意の関数を匿名にすることができます。2つのタイプにはそれぞれ固有の使用法ドメインがあります(this明示的にバインドする必要がある場合、または明示的にバインドしない必要がある場合)。これらのドメイン間では、どちらの表記でも十分なケースが多数あります。 ES6の矢印関数には、少なくとも2つの制限があります。 動作しませんnewし、作成時に使用することはできませんprototype this初期化時にスコープに固定された これらの2つの制限は別として、矢印関数は理論的にはほとんどどこでも通常の関数を置き換えることができます。実際にそれらを使用する正しいアプローチは何ですか?矢印関数を使用する必要があります。例: 「どこでも機能する」、つまりどこでも関数はthis変数にとらわれる必要がなく、オブジェクトを作成していません。 「必要なところすべて」、つまり特定のスコープにバインドする必要があるイベントリスナー、タイムアウトのみ 「短い」関数ではあるが「長い」関数ではない 別の矢印関数を含まない関数のみ 私が探しているのは、ECMAScriptの将来のバージョンで適切な関数表記を選択するためのガイドラインです。ガイドラインは、チーム内の開発者に教えることができるように明確にする必要があり、関数の表記法間で一定のリファクタリングが必要にならないように一貫している必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.