JSON是目前广泛使用的数据交换格式之一,但要注意的是其中包含的特殊值"NaN"(表示不是数字)可能会带来问题。
{ "name": "Lucy","age": 25,"score": NaN }
上述JSON字符串中,"score"字段的值是"NaN"。如果将该JSON字符串解析为JavaScript对象,在涉及计算的情况下,会出现如下问题:
const obj = { "name": "Lucy","score": NaN }; console.log(obj.score + 1); // 输出为NaN
出现NaN的原因是因为NaN与任何数值计算的结果都是NaN。如果需要避免这种问题,可以通过判断类型来过滤NaN:
const obj = { "name": "Lucy","score": NaN }; if(typeof obj.score === "number" && isFinite(obj.score)) { console.log(obj.score + 1); // 输出为NaN }
以上代码中,使用typeof判断"score"字段的类型是否为number,同时使用isFinite判断是否为有限数值,通过加上条件判断,可以避免NaN带来的计算问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。