猿问

为什么JavaScript处理字符串和数字之间的加号和减号运算符的方式不同?

为什么JavaScript处理字符串和数字之间的加号和减号运算符的方式不同?

我不明白为什么JavaScript以这种方式工作。


console.log("1" + 1);

console.log("1" - 1);

第一行打印11,第二行打印0.为什么JavaScript将第一行作为字符串处理,第二行作为数字处理?


qq_笑_17
浏览 1047回答 3
3回答

婷婷同学_

它可以表示“连接” 或 “添加”。由于一边是一个字符串,它被认为是“连接”,因此结果是11(顺便说一下,这是我小时候最喜欢的笑话之一。那和“1 + 1 =窗口”,如同视觉上示出:│┼│ ニ ⊞)-但是只有一个含义:减去。所以它减去了。这种问题在其他语言中并不存在,例如PHP,其中“连接” .代替+,不会产生歧义。像MySQL这样的其他语言甚至没有连接运算符,而是使用CONCAT(a,b,c...)。

胡说叔叔

因为规范明确告诉这样做。第75页。注意11.6.1步骤5-8和11.6.2步骤5-7之间的区别。11.6.1 - 描述加法运算符的工作原理1-4。...5。设lprim为ToPrimitive(lval)。6。设rprim为ToPrimitive(rval)。7。如果Type(lprim)是String或Type(rprim)是String,那么7a。返回串联ToString(lprim)后跟ToString(rprim)的结果的字符串8。将添加操作的结果返回到ToNumber(lprim)和ToNumber(rprim)11.6.2 - 描述减法运算符的工作原理1-4。...5。让lnum为ToNumber(lval)。6。设rnum为ToNumber(rval)。7。将减法运算的结果返回到lnum和rnum总结 在添加的情况下,如果转换为原始值而没有任何提示的任何操作数突然变为字符串,则第二个操作数也将转换为字符串。在减法的情况下,两个操作数都被转换为数字。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答