【问题标题】:Why does the addition (plus) operator produce a string when the left operand is a number and the right one is a string? [duplicate]为什么当左操作数是数字而右操作数是字符串时,加法(加)运算符会生成字符串? [复制]
【发布时间】:2016-05-09 17:13:21
【问题描述】:

当我收到几篇关于这个主题的帖子并知道表达式评估是从左到右发生时,这就是为什么"1"+1 gives "11"1+"1" also gives "11",请解释一下为什么?

这篇文章中提到并被大多数观众接受。 Javascript (+) sign concatenates instead of giving sum of variables

【问题讨论】:

  • 它通过Number.toString() 方法将数字转换为字符串。试试这个:+"1" + 1,这将导致2"1" 转换为 +1。还有1 + 1 = 2
  • 我没有得到反对的理由。 ://
  • 因为这个问题并不那么有趣。老实说,我没有投反对票,我只是认为您可以在每个在线教程中找到这些内容。也许其他人因此而投票反对?我不知道,我不是其中之一。
  • 其实困惑来自这个答案..stackoverflow.com/questions/5961000/…
  • 不幸的是,下面给出了答案。它逐步解释了它发生的原因。基本上:如果找到一个字符串,则所有内容都将转换为字符串。然后将其连接起来。

标签: javascript


【解决方案1】:

因为规范是这样说的。见The Addition operator (+)

  1. 如果Type(lprim) 是字符串或Type(rprim) 是字符串,那么
    1. 返回字符串,它是连接ToString(lprim) 后跟ToString(rprim)的结果
  2. 返回对ToNumber(lprim) 和ToNumber(rprim) 应用加法运算的结果。

所以只关心某个操作数是否是字符串,而不是哪个。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-22
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 2021-07-29
    相关资源
    最近更新 更多