在 JavaScript 中添加字符串 “1” + - “2” == “1-2”
Adding strings in JavaScript "1" + - "2" == "1-2"
我不小心输入了以下JavaScript语句"1" + - "2"
,结果"1-2"
。我不确定为什么减号被视为字符串而不是导致语法错误。
我试图搜索,但我没有得到我想要的答案。
为什么减号被视为字符串? 它有在线参考我可以看吗? 谢谢
简单:- "2"
的计算结果为 -2
,因为一元-
将其操作数强制为一个数字,这正是 ECMA-262 规范中定义的行为。
11.4.7 一元
-
运算符一元
-
运算符将其操作数转换为Number
类型,然后对其进行否定。请注意,否定+0
会产生−0
,否定−0
会产生+0
。生产 UnaryExpression
: -
UnaryExpression 的计算方法如下:
- 让 expr 是计算 UnaryExpression 的结果。
- 让 oldValue 为 ToNumber(GetValue(expr))。
- 如果 oldValue 为 NaN,则返回 NaN。
- 返回否定 oldValue 的结果;即计算一个大小相同但符号相反的数字。
然后这只是字符串连接的问题:不出所料,"1" + (-2)
评估为 "1-2"
.在这一点上,+
在上下文中是一个字符串连接(而不是加法)运算符也就不足为奇了,因为这就是规范所说的。
博士
因为,与往常一样,这是规范要求的行为。
原文
"1" + - "2"
解析为
"1" + ( - "2" )
这里的-
将"2"
转换为数字并取反它,因此- "2"
计算结果为 -2
。所以这变成了:
"1" + (-2)
在这里,+
使-2
转换为字符串,"-2"
,然后执行简单的字符串连接。
一元-
运算符 (-x) 优先于二进制+
运算符 (x + y)。
所以"1" + - "2"
实际上被解析为"1" + -2
,而又被解析为字符串约定"1" + "-2"
,最后在"1-2"
中
相关文章:
- 单击更改图标并通过javascript添加一个css类
- 用Javascript添加带有#text的tr元素
- 如何将javascript添加到Wordpress侧边栏中
- 如果选中复选框,则 JavaScript 添加值
- 如何使用javascript添加svg
- 用javascript添加类,而不是替换
- 如何选择具有类名的元素并使用javascript添加到数组中
- 使用JSON和JavaScript添加额外的html列表元素
- 以编程方式将特定的JavaScript添加到Qualtrics中的特定问题中
- 使用JavaScript添加单词样式,但避免链接
- 如何将javascript添加到wordpress网站
- 使用 javascript 添加微数据
- 通过JavaScript添加引导按钮
- 通过javascript添加重复元素
- 如何使用Javascript添加和使用Div作为总计算器
- 关于为JavaScript添加适当的语言环境支持,我目前有什么建议可以遵循吗
- Javascript-添加具有不同值的相同属性
- 如果在数组中发现重复,则必须通过纯javascript添加带关键字的索引
- 在本地将javascript添加到examplep中以执行数学/公式运算
- JavaScript添加天数