检查未定义的对象后,“无法读取null的属性”

时间:2014-08-18 06:43:31

标签: javascript

我有一个对象,我需要检查它是否已定义。另外,我还想检查该对象的属性是真还是假。

所以我想要的是

if ((typeof myVar !== 'undefined') && (myVar.isMale === false)) {
     // Do something 1
 }
 else{
      // Do something 2
 }

但是这个逻辑给了我错误

Uncaught TypeError: Cannot read property 'isMale' of null 

处理这种情况的最佳登录是什么?

谢谢!

1 个答案:

答案 0 :(得分:6)

您需要进一步测试,排除:

if (typeof myVar != 'undefined' && myVar && myVar.isMale === false) {

或包含:

if (typeof myVar == 'object' && mVar && myVar.isMale === false) {

但是有些对象返回的值不是" object"使用typeof测试(例如主机对象可以和Function对象一样)。

或通过显式转换:

if (typeof myVar != 'undefined' && Object(myVar).isMale === false) {

修改

额外的&& myVar测试是捕获NaN和null,它通过 typeof 测试。