var data = [{
"error": false,
"date": "09-02-2016",
"day": "5",
"checkin": "20:29:11",
"checkout": null,
"break_timein": null,
"break_timeout": null,
"checkin_remarks": "test",
"checkout_remarks": null,
"break_time_remarks": null
}];
console.log(data[0].checkin)
console.log(data[0].break_timein)
console.log(data[0].break_timein.length > 0 || data[0].break_timein != null)

对于break_timein
,当我在console.log中时,它返回null但是当我得到它的长度时它返回Cannot read property 'length' of null
为什么会这样?
答案 0 :(得分:1)
你在这里得出了错误的结论。该错误与财产是否存在无关。据我所知,只有在没有属性
break_timein
的情况下才会显示,但只有null
如果某个媒体资源不存在且您尝试访问其中的媒体资源,则会收到以下错误:
var foo = {};
foo.bar.baz;
// Uncaught TypeError: Cannot read property 'baz' of undefined
" undefined"在这句话中没有引用属性的存在,它指的是值 undefined
。在JavaScript中,当访问属性时不存在,访问它将返回值undefined
:
foo.bar
// undefined
还有其他情况会创建undefined
,例如当您定义一个没有初始值的变量时:
var abc;
abc;
// undefined
知道我们可以测试直接访问undefined
上的属性时会发生什么:
undefined.foo
// Uncaught TypeError: Cannot read property 'foo' of undefined
这会抛出与上面相同的错误,因此它与属性访问没有任何关系。
现在我们已经确定undefined
不能在属性访问上下文中使用。
null
是另一个值,就像那样:
null.foo
// Uncaught TypeError: Cannot read property 'foo' of null
是什么使null
和undefined
与其他原始值(字符串,数字,布尔值)不同,它们会显示此行为?
null
和undefined
实际上是两种唯一数据类型的值:Null和Undefined。
的数据类型对象包装。字符串,数字和布尔值可以以两种形式存在:作为原始值和作为对象值:
var primitive = "foo";
var object = new String("foo");
当您访问原语值的属性时,例如"foo".length
,JavaScript automatically converts the primitive value到temporary object value,类似于new String("foo").length
。
但由于Null and Undefined
没有等效的对象(由于没有Null
或Undefined
函数这一事实很明显),所以无法做到这一点,因此会抛出错误
答案 1 :(得分:0)
在这里,null
没有任何属性,例如 - 长度,这就是为什么它会抛出错误"Cannot read property 'length' of null"
。你应该写这样的语句:
console.log(data[0].break_timein != null || data[0].break_timein.length > 0);