为什么有些字符串会转换为数字而其他字符串则不会转换为javascript

时间:2018-03-28 19:18:38

标签: javascript

我是java脚本的新手。在Web浏览器的控制台中,我观察了以下内容。

"" - 1 + 0 = -1
"4" - 2 = 2
"4px" - 2 = NaN
" -9\n" - 5 = -14

我知道除了加法之外,在执行数学运算时,字符串将被转换为数字。在第3次操作中," 4px"由于" px"而不是有效数字。结果证明是NaN。但我不明白" -9 \ n"转换为-9即使" \ n'存在。

这可能是一个简单的问题。但我无法理解原因。如果我遗失任何东西,可以告诉我吗?

3 个答案:

答案 0 :(得分:3)

\n是换行符的转义序列。那是你按“Enter”键时得到的那个。

例如,\ncat之间有一个dog

cat
dog

如果您执行" 9 " + 0,则会获得9,因为JavaScript会在转换为数字时忽略周围的空格。这里也是如此,因为换行符被认为是空格。

答案 1 :(得分:3)

我认为你刚刚发生了一个允许" -9 \ n"自动转换为数字。字符序列" \ n"代表大多数语言的换行符(包括Javascript),因此被视为空格。这也意味着" \ t"标签和" \ r"对于退货/换行,同样会被忽略。

> "-2\n" - 2
-4
> "-2\t" - 2
-4
> "-2\r" - 2
-4

但是,只要您使用不是空格(标签,换行符等)的转义序列的字母进行测试,或者删除转义的反斜杠,它就会被识别为字母并被评估为是NaN。

> "-2\a" - 2
NaN
> "-2n" - 2
NaN

答案 2 :(得分:0)

字符串中的'\ n'被许多编程语言(如果不是全部)理解为换行符。

这意味着什么? 如果您将\n放入字符串中,例如:

var fruits = "apple \nbanana \norange"

console.log(fruits)打印的最终结果如下所示:

apple
banana
orange

你可以找到大多数转义序列on this article on Wikipedia(不要担心它主要用于其他语言的标题)