recherche

Maison  >  Questions et réponses  >  le corps du texte

Pourquoi l'opérateur js "+" ?

Pourquoi +'11' peut être converti en nombre 11,
mais le résultat de 1 + '11' est la chaîne '111' ?

phpcn_u1582phpcn_u15822746 Il y a quelques jours724

répondre à tous(4)je répondrai

  • 淡淡烟草味

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

    Puisque cette réponse existait avant ES6, cette réponse est tirée de ES5.

    +'11'

    Source de réponse : ECMAScript5.1 11.4.6

    L'opération unaire + convertit sa valeur d'opération en nombre. Ne demandez pas pourquoi, elle est définie dans la spécification.

    1 + '11'

    Source de réponse : ECMAScript5.1 11.6.1

    Étapes de l'opération d'addition :

    1. Convertissez d'abord les valeurs gauche et droite​​en métatypes (tels que des chaînes et des nombres) ; par exemple, les booléens seront convertis en nombres, et les objets seront généralement convertis en chaînes, etc. ;

    2. Ajoutez-le
      1. Si la valeur convertie lvalue ou rvalue est une chaîne, les deux valeurs seront converties en chaînes pour l'opération d'épissage
      2.  ;

      3. Sinon, convertissez à la fois la lvalue et la rvalue en nombres, puis effectuez des opérations d'addition sur les nombres ; (par exemple, le type d'élément de conversion booléen n'est pas une chaîne, mais est toujours un booléen, donc en jugeant cette branche ici, le Booléen Convertir en numéro 1 ou 0)
    3. Retour des résultats.
    4. répondre
      0
  • 阿神

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

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

    Je suis également débutant en js. C'est ce que je comprends. Si c'est faux, vous pouvez me corriger.

    répondre
    0
  • 仅有的幸福

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

    +'11' -----> Opérateur unaire

    L'opérateur unaire + convertit son opérande en type Nombre.

    1+'11' ----> opérateur d'addition

    Si l'un des opérandes est de type chaîne, convertissez l'autre opérande en chaîne et renvoyez le résultat de la concaténation des deux chaînes.

    répondre
    0
  • 漂亮男人

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

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

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

    répondre
    0
  • Annulerrépondre