0
以下の例はうまく機能し、内部スコープでレキシカルスコープが使用できます。ES6の語彙スコープの問題
var fn =function(){
this.no = 0;
this.addNo =() => {
setTimeout(()=> {
// ES6 lexical scope is available
this.no =++this.no;
console.log(this.no);
}, 2000);
}
}
var f1 = new fn();
f1.addNo();
f1.addNo();
ここでの例は機能しません。
var fn =() =>{
this.no = 0;
this.addNo =() => {
setTimeout(()=> {
// ES6 lexical scope is not available
this.no =++this.no;
console.log(this.no);
}, 2000);
}
}
var f1 = new fn();
f1.addNo();
f1.addNo();
エラー
「はTypeError:)(
"use strict";
VARは、fn =関数fn:プロパティを設定することはできません 'NO' 未定義
「スコープ」は、外部関数のみを任意の変数として宣言しているため、ここでの問題とは関係ありません。問題は、矢印関数と正規関数の間に 'this'がどのように結びついているかにあります。 – Pointy
名前付き関数を伝統的な方法で与えると、以下のコードが動作することを理解します。しかし、なぜそれを得ることができませんでした。 – alowsarwar
arrow関数にはコンストラクタがありません。新しいキーワードを使用してそれらをインスタンス化することはできません。 – ndugger