Javascript的新功能和我遇到的东西很有趣。我看到了这个例子:
"37" - 7 // "30"
"37" + 7 // "337"
这是一个演示Javascript如何转换和处理字符串和整数的练习。我不明白为什么这两个陈述的处理方式不同。第一个语句将37转换为整数并减去7,留下30(如果我将其更改为6,则变为31)。但是,在第二个语句中,它将它视为一个字符串,并将第二个7连接到字符串的末尾。
出于测试目的,我写的是:
var number = "37" - 7
console.log(number);
在文本中,将其保存为.js文件并使用Node.js执行。
如果没有简单的方法来解释这一点,我将把这归结为JS所具有的奇怪行为。一个过于复杂的答案会浪费在像我这样的新手身上。
提前谢谢。
答案 0 :(得分:3)
由于+
过载,因此处理方式不同。它有两个功能:
这些操作是在不同的数据类型(数字和字符串)上定义的,因此如果它获得混合类型(而不是数字),则必须决定执行哪个操作。有人认为如果至少有一个操作数是字符串,则应该执行字符串连接。
-
运算符仅为数字定义,因此操作数将始终转换为数字。
答案 1 :(得分:2)
当你看这两种情况时,要记住的是当你使用字符串时,添加有不同的含义。
当你这样做时:
37 + 7 // 44
你只是添加了两个数字......但如果你这样做
"37" + 7 // "337"
您将字符串附加7" 37"。
由于减法符号在JS中没有使用字符串,因此它假设37为int并且减法产生:
"37" - 7 // "30"