我試圖讓這片代碼工作的:關閉編譯不適@const這個
/** @constructor */
function Foo()
{
/** @const */
this.bar = 5;
// edit: does now work
// this.bar = 3;
}
var f = new Foo();
// should be inlined (like other constants)
alert(f.bar);
我已經嘗試加入更多的註釋(類型,構造函數),中@enum
代替@const
(用於this.bar
),me = this
所有這些都沒有任何影響。
help page對此沒有什麼幫助。
有沒有辦法讓這個工作? 如果不是,爲什麼?
當前綴'@ const'註釋時,變量將被內聯(稱爲[constant propagation] //en.wikipedia.org/wiki/Constant_propagation))通過Closure編譯器,這對於正常的'var'語句非常有效,這就是我想用屬性重現的行爲,它與你描述的過程有任何關係 – copy 2012-04-02 18:55:32
正如我所說的,編譯器有不支持這個。它會在類屬性時檢查@const註釋,但在執行優化時實際使用該信息會更保守。 – John 2012-04-02 23:20:24
我多花了一些時間與編譯器一起玩,但認爲你是對的;似乎沒有辦法做到這一點。無論如何,我現在正在使用cpp。 – copy 2012-04-06 17:22:26