我正在尝试实现一个(非常)简单的try {} catch {}块,如下所示:
try{
var invoice = parseInt(localStorage[0]);
if(invoice == NaN)
throw "invoice not a number";
localStorage[invoice] = Ticket;
console.log("localStorage["+invoice+'] : '+localStorage[invoice]);
}
catch (e){
console.log(e);
this.test();
}
我所做的是用另一个函数手动清除localStorage,从而将localStorage [0]设置为undefined。当我parseInt(localStorage [0])时,它返回NaN,并将其存储到发票中。我使用了双重等于条件的发票和NaN所以,以防万一,即使NaN是一个字符串(它不应该是),它也应该是真的。
我的问题是:为什么,当我说“扔......”时,它不会调用块的捕获部分吗?
当我运行以下代码时,我在Chrome控制台中获得以下输出:
localStorage [NaN]:[object Object]
它甚至没有运行catch块,事实上,即使它应该抛出异常,它仍会继续运行try块。
为什么会这样?
答案 0 :(得分:4)
NaN
不等于自己,请使用isNaN
。