JavaScript字符串转数字规则疑问:为何带换行符的字符串可转为数字?
为什么带有换行符的
" -9\n"能被转换为-9? 嘿,这个问题问得特别到位!作为JS新手能注意到这个细节真的很棒,我来给你把这个逻辑拆解清楚:
当JavaScript执行除加法外的数学运算(比如减、乘、除)时,会自动把字符串调用**ToNumber抽象操作**转换成数字,而字符串转数字的规则里,有个关键步骤你可能没注意到:
- 第一步会忽略字符串首尾的所有空白字符——这里的空白不止是空格,还包括换行符
\n、回车符\r、制表符\t、垂直制表符这些所有Unicode定义的空白类字符 - 第二步才会把处理后的纯数字字符串转换成对应的数字
回到你的例子" -9\n" - 5:
- 先处理字符串
" -9\n":去掉首尾的空格和换行符,得到"-9" - 把
"-9"转换成数字-9,再执行减5操作,结果就是-9 - 5 = -14
而你提到的"4px" - 2之所以得到NaN,是因为去掉首尾空白后剩下的"4px"里,px不属于有效数字字符,转换到这里就失败了,所以返回NaN。
再给你举几个类似的例子加深理解:
"\t 123 \r" * 2→ 246(首尾的制表符和回车被忽略)" -45\n\n" / 3→ -15(多个换行和空格都被去掉)
这样是不是就明白啦?
内容的提问来源于stack exchange,提问作者kadina
相关产品推荐
相关产品推荐

