鸿蒙开发:7-关于JSON.stringify的坑

252 阅读1分钟

关于JSON.stringify的坑

今天帮别人看个问题,看着输出和代码,一开始没看出啥问题,后来发现他用JSON.stringify仅仅只是为了将数值或字符转成字符串,潜意识里只是认为这样是在滥用,改了以后,bug消失。 所以严格来说,也不能叫坑,只是一些不当的用法会导致较难排查的bug。

简单提炼一下基本就如下,定义一个字符串'0'和'1',用来作为判断的flag

image.png

c就是业务获取到的值,与d进行比较,输出乍一看都是正常的(都是string,log出来都是"0"),但cd就是不相等。

而且使用Number(c)强转数字后还是NAN

image.png

其实在浏览器控制台还是能很好看出来的,但一般的cmd窗口就很难看出区别

image.png

JSON.stringify() - JavaScript | MDN (mozilla.org) 查看MDN上解释,JSON.stringify()  方法将一个 JavaScript 对象或值转换为 JSON 字符串。

而对于字符串0,其JSON格式就是"0"(JSON是双引号)。写成字符串形式就是'"0"'

而其虽是字符串,但是如果强转数值,本质就是Number('"0"'),就会是NAN。

唠唠叨叨这么多,好像也没讲很清楚,大家意会一下/(ㄒoㄒ)/~~。