js中,对象的成员如果不存在,怎样能不报错?

比如说

let b = [];
a = { k:'1' };
b.push({ name:a.k });
console.log(b); // => ok
// 但是
b.push({ name:a.c });
console.log(b); // => nodejs 却报错,而不是直接显示 undefined
阅读 5.7k
5 个回答

图片描述
我这里是没有问题的

//不在严格模式下,会添加undefined 到数组

//在严格模式下,会报语法错误

'use strict'
let a = [];

b = {
k : 12
}
// b.c 是 undefined

a.push(b.c); // 这里会报语法有错误

可能你报错的原因是在严格模式下,a没有定义,导致报错,解决,去掉严格模式(不建议)或定义a,ps>>楼上用手机运行node?厉害了
图片描述

尝试代码没有问题的,我猜是因为题主把两段代码写在一起了,但是 那里是两段代码的分隔。

在 Node 下,会报 ReferenceError,因为 Node 已经支持 ES2015 和 ES2017,是按严格模式来运行的。

要想不报错……用 try ... catch 试试

try {
    b.push({ name: a.c });
    console.log(b);
} catch (e) {
    // 不写这句话就啥消息都没有
    console.log("[ERROR]", e.message);
}

try...catch 或者先判断?

看了楼下评论,试了下,我也没有问题 ... node 7.7.4

看来还是要实践,除了自己谁都不能轻信 ...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题