Heim > Fragen und Antworten > Hauptteil
let a = {a:'1'};
a.c ====> 正常,为underfind
let b = null
b.s =====> 会报错 Cannot read property 's' of null
如何实现 console.log(b.s) ====> 结果依然为 null
有一个model,用户输入查询条件,我不知道model是不是空的,所以代码里会写 model.id,这时model查不到,会报错。。。。。 if(model){ model.id } 我觉这种写法不优雅
伊谢尔伦2017-04-11 13:15:52
let b=null表示b是一个不存在的对象,不存在的对象哪来的属性?所以报错
let b= {};这样b是一个空对象,b.s取空对象中不存在的属性才会输出underfind的。
你的需求本身就是反javascript的。。
ringa_lee2017-04-11 13:15:52
这个应该实现不了,js就是这么设定的不能在 null上调用任何属性或方法
如果硬要实现
let b = null
try{
b.s
}catch(e){
console.log(b)
}
迷茫2017-04-11 13:15:52
给个默认值?
let a = +new Date() % 2 === 0 ? { msg: 'succ' } : null
let b = a || {}
console.log(b.msg)
巴扎黑2017-04-11 13:15:52
The value null is written with a literal: null. null is not an identifier for a property of the global object, like undefined can be. Instead, null expresses a lack of identification, indicating that a variable points to no object. In APIs, null is often retrieved in a place where an object can be expected but no object is relevant.
天蓬老师2017-04-11 13:15:52
function getProto(obj, key) {
if(obj === null) {
return null;
}
return obj[key]
}