我有一种情况,我宣布一个对象var o = null;
然后,我将它传递给一个函数,做一些东西,然后给它分配一个对象。
稍后,我执行parse(o.page)
。
如果o
为null,那么我得到" TypeError:o.page为null",
程序在那里停止,因为我试图获得空值的属性。
我知道一个解决方案可能是最初为所有o
属性分配null。
只是想知道是否有更微妙的方法来处理这个错误。
因为我想处理parse1(o);
和parse2(o.page1)
,其中o
可以为空。
答案 0 :(得分:3)
您可以使用三元运算符执行此操作:
parse2(o ? o.page1 : null)
o.page
为o
时,无法让null
自行工作。
存在其他方式,例如返回{}
而不是null
,因为调用不存在的属性会产生undefined
而不是抛出错误。
一般来说,建议避免在代码中存在无效调用的情况。您可以在使用之前检查返回值(如上所述),也可以不返回可能使后续代码无效的值。
答案 1 :(得分:2)
而不是null
,指定一个空对象。
var o = {};
如果属性为o
,则无法将属性分配给null
。这将导致
TypeError: Cannot set property 'propname' of null