添加String with Integer如何在JavaScript中工作?

Arn*_*ntz 31 javascript string

以下代码给出了奇怪的结果:

console.log("" + 1 + 10 + 2 - 5 + "8");
Run Code Online (Sandbox Code Playgroud)

我已经尝试输入各种不同的值来解决它,但我无法理解引擎盖下发生了什么.

Phr*_*ogz 68

"" + 1          === "1"
"1" + 10        === "110"
"110" + 2       === "1102"
"1102" - 5      === 1097
1097 + "8"      === "10978"
Run Code Online (Sandbox Code Playgroud)

在JavaScript中,+运算符用于数字加法和字符串连接.当您向字符串"添加"数字时,解释器会将您的数字转换为字符串并将它们连接在一起.

-但是,当您使用运算符时,字符串将转换回数字,以便可能发生数字减法.

然后,当您"添加" "8"字符串时,再次发生字符串连接.该数字1097将转换为字符串"1097",然后加入"8".

  • 在一个几乎完全不相关的说明中,DCL(DIGITAL命令语言 - VMS的"shell"脚本)是我能记住的唯一语言,你可以减去字符串`"123"` - "2"````13 "`([见这里](http://h41379.www4.hpe.com/doc/731final/6489/6489pro_030.html)) (17认同)
  • 为了完整性:在算术运算期间,任何不表示有效数字的字符串都将被强制为 NaN(空字符串除外,它们被强制为 0)。 (2认同)

amd*_*amd 11

string + number = 连接字符串

number + number =两个数字的总和

string - number =(强制字符串)与数字之间的差异

说明:

如果一个或两个操作数是字符串,则加号被视为字符串连接运算符而不是添加数字.

减去运营商总是试图将两个操作数转换为数字.

所以:

"" + 1 + 10 + 2 = (string) "1102"    
"1102" - 5      = (number)  1097
1097 + "8"      = (string) "10798"
Run Code Online (Sandbox Code Playgroud)

  • 更重要的是:如果第一个操作数是一个刺痛,只有'+'运算符会将第二个操作数转换为String类型.任何其他数学表达式,例如""*8都会将两个参数都转换为Number并返回Number或NaN (2认同)

zer*_*0ne 5

  1. 这是一个字符串而不是数字-“”
  2. 这是一个字符串而不是数字-“ 1”
  3. 这是不是数字的字符串-“ 1” <+>“ 10” =“ 1” +“ 10” =“ 110”'
  4. 这是不是数字的字符串-“ 1” <+>“ 10” <+>“ 2” =“ 1” +“ 10” +“ 2” =“ 1102”
  5. 这是一个数字,因为没有关于负运算符-1102-5 = 1097的混淆
  6. 这是不是数字的字符串-“ 1097” <+>“ 8” =“ 1097” +“ 8” =“ 10978”

SNIPPET

document.getElementById("1").innerHTML = "";

document.getElementById("2").innerHTML = "" + 1;

document.getElementById("3").innerHTML = "" + 1 + 10;

document.getElementById("4").innerHTML = "" + 1 + 10 + 2

document.getElementById("5").innerHTML = "" + 1 + 10 + 2 - 5

document.getElementById("6").innerHTML = "" + 1 + 10 + 2 - 5 + "8";
Run Code Online (Sandbox Code Playgroud)
<ol>
  <li id='1'></li>
  <li id='2'></li>
  <li id='3'></li>
  <li id='4'></li>
  <li id='5'></li>
  <li id='6'></li>
</ol>
Run Code Online (Sandbox Code Playgroud)