关于JSON.stringify的坑
今天帮别人看个问题,看着输出和代码,一开始没看出啥问题,后来发现他用JSON.stringify仅仅只是为了将数值或字符转成字符串,潜意识里只是认为这样是在滥用,改了以后,bug消失。
所以严格来说,也不能叫坑,只是一些不当的用法会导致较难排查的bug。
简单提炼一下基本就如下,定义一个字符串'0'和'1',用来作为判断的flag
c就是业务获取到的值,与d进行比较,输出乍一看都是正常的(都是string,log出来都是"0"),但c和d就是不相等。
而且使用Number(c)强转数字后还是NAN
其实在浏览器控制台还是能很好看出来的,但一般的cmd窗口就很难看出区别
JSON.stringify() - JavaScript | MDN (mozilla.org)
查看MDN上解释,JSON.stringify() 方法将一个 JavaScript 对象或值转换为 JSON 字符串。
而对于字符串0,其JSON格式就是"0"(JSON是双引号)。写成字符串形式就是'"0"'。
而其虽是字符串,但是如果强转数值,本质就是Number('"0"'),就会是NAN。
唠唠叨叨这么多,好像也没讲很清楚,大家意会一下/(ㄒoㄒ)/~~。