タグ付けされた質問 「arrow-functions」

ECMAScript2015(ES6)のコンパクト関数構文に関する質問は、「=>」を使用しているため「矢印関数」と呼ばれていました。

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() { // ... } …



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

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


8
ES2015で名前付き矢印関数を作成するにはどうすればよいですか?
ES6で新しい矢印構文に変換しようとしている関数があります。これは名前付き関数です: function sayHello(name) { console.log(name + ' says hello'); } varステートメントなしでそれに名前を付ける方法はありますか? var sayHello = (name) => { console.log(name + ' says hello'); } 明らかに、私はそれを定義した後でのみ、この関数を使用できます。次のようなもの: sayHello = (name) => { console.log(name + ' says hello'); } ES6でこれを行う新しい方法はありますか?


4
ES6はすぐにアロー関数を呼び出しました
なぜこれはNode.jsコンソール(4.1.1と5.3.0でテスト済み)では機能するが、ブラウザー(Chromeでテスト済み)では機能しないのですか?このコードブロックは、ログを記録する無名関数を作成して呼び出す必要がありますOk。 () => { console.log('Ok'); }() また、上記しながら、作品のノードで、これは動作しません。 n => { console.log('Ok'); }() これも: (n) => { console.log('Ok'); }() 奇妙なことに、パラメータが追加されると、実際SyntaxErrorにはすぐに呼び出される部分にaがスローされます。


5
ES6の矢印関数でjQuery $(this)を使用する(字句thisバインディング)
字句thisバインディングでES6矢印関数を使用するのは素晴らしいことです。 しかし、典型的なjQueryクリックバインディングで使用する前に問題が発生しました。 class Game { foo() { self = this; this._pads.on('click', function() { if (self.go) { $(this).addClass('active'); } }); } } 代わりに矢印関数を使用します。 class Game { foo() { this._pads.on('click', () => { if (this.go) { $(this).addClass('active'); } }); } } そして$(this)ES5(self = this)型クロージャに変換されます。 Traceurに字句バインディングの「$(this)」を無視させる方法はありますか?

5
ES6 / Typescriptの矢印関数での_(アンダースコア)変数の使用
私はAngularの例でこの構造に出くわし、なぜこれが選択されるのか不思議に思います: _ => console.log('Not using any parameters'); 変数_は気にしない/使用しないことを意味しますが、それが唯一の変数であるため、_よりも_の使用を好む理由があります。 () => console.log('Not using any parameters'); 確かに、これはタイプするのに約1文字少なくなることはありません。()構文は、私の考えでは意図をよりよく伝え、タイプ固有でもあります。それ以外の場合、最初の例は次のようになっているはずだと思います。 (_: any) => console.log('Not using any parameters'); 重要な場合は、これが使用されたコンテキストです。 submit(query: string): void { this.router.navigate(['search'], { queryParams: { query: query } }) .then(_ => this.search()); }

6
JSXプロップが矢印関数またはバインドを使用しないのはなぜですか?
Reactアプリでlintを実行していますが、次のエラーが表示されます。 error JSX props should not use arrow functions react/jsx-no-bind そして、これは私が矢印関数を実行しているところです(内部onClick): {this.state.photos.map(tile => ( <span key={tile.img}> <Checkbox defaultChecked={tile.checked} onCheck={() => this.selectPicture(tile)} style={{position: 'absolute', zIndex: 99, padding: 5, backgroundColor: 'rgba(255, 255, 255, 0.72)'}} /> <GridTile title={tile.title} subtitle={<span>by <b>{tile.author}</b></span>} actionIcon={<IconButton onClick={() => this.handleDelete(tile)}><Delete color="white"/></IconButton>} > <img onClick={() => this.handleOpen(tile.img)} src={tile.img} style={{cursor: 'pointer'}}/> …

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