TypeError:为null

时间:2011-11-17 17:56:28

标签: javascript typeerror

我有一种情况,我宣布一个对象var o = null;

然后,我将它传递给一个函数,做一些东西,然后给它分配一个对象。

稍后,我执行parse(o.page)。 如果o为null,那么我得到" TypeError:o.page为null", 程序在那里停止,因为我试图获得空值的属性。

我知道一个解决方案可能是最初为所有o属性分配null。

只是想知道是否有更微妙的方法来处理这个错误。 因为我想处理parse1(o);parse2(o.page1),其中o可以为空。

2 个答案:

答案 0 :(得分:3)

您可以使用三元运算符执行此操作:

parse2(o ? o.page1 : null)

o.pageo时,无法让null自行工作。

存在其他方式,例如返回{}而不是null,因为调用不存在的属性会产生undefined而不是抛出错误。

一般来说,建议避免在代码中存在无效调用的情况。您可以在使用之前检查返回值(如上所述),也可以不返回可能使后续代码无效的值。

答案 1 :(得分:2)

而不是null,指定一个空对象。

var o = {};

如果属性为o,则无法将属性分配给null。这将导致

TypeError: Cannot set property 'propname' of null