【问题标题】:Why does Javascript only type-cast for string concatenation on strings that are already assigned?为什么 Javascript 仅对已分配的字符串进行字符串连接类型转换?
【发布时间】:2020-03-01 03:50:02
【问题描述】:

在 Javascript 控制台中处理字符串和数字时,我注意到一些奇怪的事情。这样做:

"$99.9" += 0

导致SyntaxError: Invalid left-hand side in assignment。但是,如果我将字符串分配给一个变量,则行为会有所不同(并且更符合我们对 Javascript 的期望/接受)

let str = "$99.9"

str += 0 // => "$99.90"

我熟悉导致第二个示例中的行为的原因(以及导致许多其他 Javascripty 事情发生的原因),但第一个示例中的错误让我感到惊讶。在第一个阻止通常的 Javascript 行为的示例中发生了什么?

【问题讨论】:

    标签: javascript string types casting concatenation


    【解决方案1】:

    那是因为你只能给变量赋值。在您的情况下,您正在尝试为字符串分配值。从字面上看。 += 运算符转换为 variable = variable + 0。在您的情况下,它转换为:"$99.9" = "$99.9" + 0 和 "$99.9" 不是变量,也不是有效的变量名。
    在第二种情况下,您使用+= 运算符将“$99.9”值分配给变量THEN 以更改变量值。

    【讨论】:

      猜你喜欢
      • 2011-09-16
      • 2019-09-20
      • 2015-01-26
      • 1970-01-01
      • 2019-10-09
      • 2017-03-30
      • 2016-08-06
      • 1970-01-01
      • 2016-03-11
      相关资源
      最近更新 更多