test1がコンパイルに失敗する理由を誰かが知っていますか?
class Y { public myMethod: any; };
class QQ { public test(name, fun: () => any) { } }
var qq = new QQ();
qq.test("Run test1", () => {
var outer = 10;
Y.prototype.myMethod = () => {
// Error: The name 'outer' does not exist in the current scope
outer = 11;
}
});
しかし、次のように機能します。
qq.test("Run test2", () => {
var outer = 10;
var fun = ()=> { outer = 11; };
Y.prototype.myMethod = fun;
});
必要なコードのJavaScriptバージョンは次のようになります。
qq.test("Run test1", function () {
var outer = 10;
Y.prototype.myMethod = function () {
outer = 11;
};
});
外部関数は、そのクロージャ内で変数「外部」を宣言します。これは、内部関数から自然に見えるはずです。