ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript アロー関数の使用法の概要
function funcName(params) { return params + 2; } funcName(2); // 4この関数はアロー関数を使用しており、たった 1 行のコードで実行できます。
var funcName = (params) => params + 2 funcName(2); // 4パラメーターが 1 つだけの場合、括弧は省略できます:
() => { statements }戻り値が 1 つの式 (式) のみの場合は、中括弧も省略できます:
parameters => { statements }アロー関数の構文を学習したところで、次は次のとおりです。それを練習してください。 Chrome ブラウザの開発者コンソールを開いて、次のように入力します:
parameters => expression // 等价于: function (parameters){ return expression; }変数 double をアロー関数にバインドします。この関数はパラメータ num を持ち、num * 2 を返します。 この関数を呼び出します:
var double = num => num * 2ローカル this のバインドなし
double(2); // 4 double(3); // 6
function Counter() { this.num = 0; } var a = new Counter();
console.log(a.num); // 0
function Counter() { this.num = 0; this.timer = setInterval(function add() { this.num++; console.log(this.num); }, 1000); }累積された数値の代わりに毎秒 NaN が出力されることがわかります。何が悪かったのか?
var b = new Counter(); // NaN // NaN // NaN // ..エラーが発生した理由を理解してみましょう: 前回のブログで説明したルールによれば、まず、setInterval 関数が呼び出されませんでした。宣言されたオブジェクトであり、 new キーワードは使用されておらず、bind、call、apply は使用されていません。 setInterval は単なる通常の関数です。実際、setInterval の this はグローバル オブジェクトにバインドされています。これを印刷して確認できます:
clearInterval(b.timer);ウィンドウ オブジェクト全体が印刷されていることがわかります。 印刷を停止するには、次のコマンドを使用します。
function Counter() { this.num = 0; this.timer = setInterval(function add() { console.log(this); }, 1000); } var b = new Counter();
clearInterval(b.timer);Counter コンストラクターを介したこのバインドは保持されます。 setInterval 関数では、これは引き続き新しく作成された b オブジェクトを指します。
function Counter() { this.num = 0; this.timer = setInterval(() => { this.num++; console.log(this.num); }, 1000); } var b = new Counter(); // 1 // 2 // 3 // ...
function Counter() { var that = this; this.timer = setInterval(() => { console.log(this === that); }, 1000); } var b = new Counter(); // true // true // ...
Arrow 関数を記述するコードの構文はより簡潔です。
はこれをバインドしません。
以上がJavaScript アロー関数の使用法の概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。