我对这个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