为何JS执行+ 'any_string'时返回NaN?请查看截图
为啥JavaScript里
+ 'any_string'会返回NaN? 嘿,这个问题问得很典型!让我给你掰扯明白背后的逻辑~
首先得搞懂一元加号+运算符的本质:它在JavaScript里是专门用来把操作数转换为数字类型的工具。比如你写+ '123',会返回123,因为这个字符串能被解析成有效的数字;再比如+ true会返回1,+ ''会返回0——这些都是JS能成功完成数字转换的场景。
但当你写+ 'any_string'的时候,问题就来了:这个字符串里没有任何能被解析成有效数字的内容,JS尝试把它转换成数字失败后,就会返回特殊值NaN(全称Not a Number,代表“无法转换为有效数字”)。
再说说转义形式的+ 'any_string':'是HTML里单引号的实体编码。如果是在浏览器环境中,浏览器会先把这个实体编码解析成普通的单引号,最终执行的代码还是+ 'any_string',和第一种情况完全一致,所以结果自然也是NaN。就算是在JS里直接把'any_string'当成字符串(比如+ ''any_string''),这个字符串本身依然是一串非数字内容,同样无法完成数字转换,返回NaN。
给你几个对比例子加深理解:
+ '123' → 123(有效数字字符串,转换成功)+ '12.34' → 12.34(带小数的有效数字)+ '123abc' → NaN(混合非数字字符,转换失败)+ false → 0(布尔值false转换为0)+ null → 0(null会被转换为0)
内容的提问来源于stack exchange,提问作者0seNse0
相关产品推荐
相关产品推荐

