在Javascript中处理字符串和整数的不同方法

时间:2015-01-09 22:14:48

标签: 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所具有的奇怪行为。一个过于复杂的答案会浪费在像我这样的新手身上。

提前谢谢。

2 个答案:

答案 0 :(得分:3)

由于+过载,因此处理方式不同。它有两个功能:

  • 除了
  • 字符串连接

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

-运算符仅为数字定义,因此操作数将始终转换为数字。

答案 1 :(得分:2)

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

当你这样做时:

37 + 7 // 44

你只是添加了两个数字......但如果你这样做

"37" + 7 // "337"

您将字符串附加7" 37"。

由于减法符号在JS中没有使用字符串,因此它假设37为int并且减法产生:

"37" - 7 // "30"