検索

ホームページ  >  に質問  >  本文

なぜjs演算子「+」なのでしょうか?

「11」は数字の 11 に変換できるのに、1 つの「11」の結果が「111」という文字列になるのはなぜですか?

phpcn_u1582phpcn_u15822746日前723

全員に返信(4)返信します

  • 淡淡烟草味

    淡淡烟草味2017-06-12 09:25:43

    この回答は ES6 より前に存在していたので、この回答は ES5 から取得されたものです。

    +'11'

    回答元: ECMAScript5.1 11.4.6

    単項 + 演算は、その演算値を数値に変換します。理由は問わないでください。それは仕様で定義されています。

    1 + '11'

    回答元: ECMAScript5.1 11.6.1

    加算操作の手順:

    1. まず左と右の値をメタタイプ (文字列や数値など) に変換します。たとえば、ブール値は数値に変換され、オブジェクトは通常文字列などに変換されます。

    2. 追加してください
      1. 左辺値または右辺値のいずれかの変換値が文字列の場合、両方の値が結合操作のために文字列に変換されます。
      2. それ以外の場合は、左辺値と右辺値の両方を数値に変換し、その数値に対して加算演算を実行します (たとえば、ブール変換要素の型は文字列ではありませんが、依然としてブール値であるため、ここでこの分岐を判断するときは、ブール値 数値 1 または 0 に変換します)

      3. 結果を返します。
    3. 返事
      0
  • 阿神

    阿神2017-06-12 09:25:43

    javascript 是弱类型语言,这是一个原因。再有,如果 + 和数字放在一起,被认为是数字的正数,例如 var a = +11 等同于 var a = 11。这样,而 + 只有在字符串拼接时才会作为拼接的运算符。而 + '11'就不算是拼接字符串,因为根本没有拼接字符串。所以 js 会将 '11' 隐性的转换为 11

    私もjsの初心者です。これが私の理解です。間違っている場合は、修正していただければ幸いです。

    返事
    0
  • 仅有的幸福

    仅有的幸福2017-06-12 09:25:43

    +'11' -----> 単項演算子

    単項 + 演算子は、オペランドを Number 型に変換します。

    1+'11' ----> 加算演算子

    オペランドの一方が文字列型の場合、もう一方のオペランドを文字列に変換し、2 つの文字列を連結した結果を返します。

    返事
    0
  • 漂亮男人

    漂亮男人2017-06-12 09:25:43

    +'11'+ 是正负的正,相当于 Number('11')

    1 + '11' 是加减的加,调用了内部的 toPrimitive 方法比较,其中一方是字符串的时候会尝试调用另一方的 toStringメソッド

    返事
    0
  • キャンセル返事