なぜjs演算子「+」なのでしょうか?
phpcn_u1582
phpcn_u1582 2017-06-12 09:23:43
0
4
761

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

phpcn_u1582
phpcn_u1582

全員に返信(4)
淡淡烟草味

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

+'11'

回答元: ECMAScript5.1 11.4.6

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

1 + '11'

回答元: ECMAScript5.1 11.6.1

加算操作の手順:

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

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

    3. 結果を返します。
いいねを押す +0
阿神

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

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

いいねを押す +0
仅有的幸福

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

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

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

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

いいねを押す +0
漂亮男人

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

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

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート