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 :
Convertissez d'abord les valeurs gauche et droiteen 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. ;
Ajoutez-le
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
;
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)
+'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 :
Convertissez d'abord les valeurs gauche et droiteen 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. ;
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 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)-
;
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.+'11' -----> Opérateur unaire
1+'11' ----> opérateur d'addition
+'11'
的+
是正负的正,相当于Number('11')
1 + '11'
是加减的加,调用了内部的toPrimitive
方法比较,其中一方是字符串的时候会尝试调用另一方的toString
Méthode