我對這個javascript
行調查的間歇性的錯誤爲什麼這個變量賦值會引發錯誤?
parentWindowState = window.opener && window.opener.ACME && window.opener.ACME.state
如果你想看到的函數的其餘部分,就好像是:
_doStuff: function() {
var someVar = '',
parentWindowState = window.opener && window.opener.ACME && window.opener.ACME.state,
deferred = Q.defer();
if (parentWindowState && parentWindowState.getItem('...')) {
//lots of code
} else {
deferred.resolve();
}
return deferred.promise;
}
有用戶報告出現此錯誤
Error at _doStuff (https://acme/anvils/yoloeditor/main_20160531050717.js:456321:13) at Anonymous function (https://acme/anvils/yoloeditor/main_20160531050717.js:111202:37) at _fulfilled (https://acme/anvils/yoloeditor/main_20160531050717.js:29048:13) at Anonymous function (https://acme/anvils/yoloeditor/main_20160531050717.js:29078:13) at promise.promiseDispatch (https://...
我試過通過調試和設置變量opener
,ACME
和state
到null
或undefined
,但代碼不會拋出錯誤。它實際上應該處理空值/未定義的值。
我只能得到一個錯誤這樣的強行拋出像
throw new Error("Boom");
錯誤所以我的問題是,在什麼情況下可以此行拋出一個錯誤?
編輯:我試圖在使用Chrome進行測試時重現此錯誤。只是意識到如果ACME未定義,Internet Explorer將會拋出一個錯誤。
錯誤信息說什麼? – Quentin
錯誤中聲明'promise.promiseDispatch',並且在這一行中,您正在編寫'deferred = Q.defer()',這在邏輯上就是解釋這個錯誤的指令。 –
@chsdk對不起,我在這裏很慢,但我沒有明白你的觀點。你能解釋一個完整的答案嗎? – yannicuLar