所以看起來,調試正在獲得一個新的含義,至少在Closure Compiler中。Closure編譯器--debug解決我的bug
我有一個相當大的代碼庫,隔離問題是一項艱鉅的任務。在我的入口點類中,我實例化了依賴關係。其中之一,沒有正確創建,對象在那裏,但它的構造函數沒有被調用。
這隻發生在高級模式,所以我試圖通過 - 調試標誌,瞧,錯誤消失,構造函數被調用。這是令人興奮的。我不能複製粘貼任何特定的代碼,你會建議什麼?
/**
* @param {Element} parent
* @param {Object} opts
* @constructor
*/
ns.App = function(parent, opts) {
this.options = new ns.Options(opts || {});
var w = this.options.width || parent.offsetWidth;
var h = this.options.height || parent.offsetHeight;
this.view = new ns.AppView(w, h);
this.history = new ns.CommandManager();
// ....
// this one doesn't get called
this.amx_ = new ns.ActivityManager(this, this.options);
// this one does
this.output_ = new ns.Writer();
this.bind_();
};
當調試解決問題時,它通常表明您有競爭條件。 – jbabey
@jbabey雖然我一般同意你的說法,這有一個競爭條件的症狀,在JS(單線程)我不認爲這是可能的。 – helpermethod
@OliverWeiler大多數JavaScript錯誤都是競爭條件,這是可能的和可能的。 – jbabey