是this
範圍內TypeScript方法的參數列表中?在打字稿中指定默認值時可以使用`this`嗎?
class Foo {
constructor(public name) {}
bar(str: string = this.name) { console.log(str); }
}
let f = new Foo("Yo");
f.bar();
即使我們不是一個實例方法體內的str
默認值是使用this
規定。
目前(以打字稿1.8)這個作品,因爲它是transpiled到:
Foo.prototype.bar = function (str) {
if (str === void 0) { str = this.name; }
console.log(str);
};
所以this
用於內的方法,但這種規定是合法的嗎?
我無法找到一個答案,這與在specification粗略地看一眼。
注意:這是不合法的C++這使我懷疑它是一個預期的功能,或者只是一個人工翻譯過程。
你知道在es6規範的哪裏嗎? – Alex
[這裏](http://www.ecma-international.org/ecma-262/6.0/#sec-function-definitions)中的規格。此外,還給出了一個很好的概述(https://developer.mozilla.org/cs/docs/Web/JavaScript/Reference/Functions/Default_parameters),指出默認參數在通話時進行評估。 –