2015-01-09 20 views
0

JavaScript和JavaScript的新东西是有趣的。我被展示了这个例子:在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所具有的奇怪行为。过于复杂的答案会浪费在像我这样的新手上。

预先感谢您。

+1

不能从字符串中减去,所以JavaScript的对待 - 签署为具有数字参数。然而,你可以添加字符串,所以如果左边有一个字符串,那么JavaScript会将右边的arg转换为字符串。这不是奇怪的行为,它是预期的。 – 2015-01-09 22:17:09

+1

'+'用于加法和连接,而'-'只是减号。在你的情况下,你用'+'连接字符串。 – j08691 2015-01-09 22:17:13

回答

3

它们的处理方式不同,因为+被重载。它有两个功能:

  • 此外
  • 字符串连接

这些操作都在不同的数据类型(数字和字符串)定义的,所以如果它得到混合类型(而不是数字),它有决定要执行哪个操作。有人认为如果至少有一个操作数是一个字符串,则应该执行字符串连接。

然而,-运营商只定义为数字,所以操作数将始终转换为数字。

+0

啊。我不敢相信我忽略了这一点。自从我用一种可以与字符串一起工作的编程语言搞混了,已经有一段时间了。我习惯了concat()函数。谢谢你提醒我。 – Rincewind 2015-01-09 22:22:15

2

当你看到这两种情况时,需要记住的是,当你使用字符串时,加法有不同的含义。

当你这样做:

37 + 7 // 44 

你只是两数相加......但如果你做

"37" + 7 // "337" 

要附加7字符串 “37”。

由于减法符号没有与JS串的使用,它假定37为int并执行其产生减法:

"37" - 7 // "30" 
+1

这是正确的 – Jay 2015-09-26 21:32:55

相关问题