javascript - js中,对象的成员如果不存在,怎样能不报错?
PHPz
PHPz 2017-04-11 13:11:04
[JavaScript讨论组]

比如说

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

学习是最好的投资!

全部回复(5)
迷茫


我这里是没有问题的

阿神

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

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

'use strict'
let a = [];

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

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

高洛峰

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

PHPz

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

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

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

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

try...catch 或者先判断?

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

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号