Leí esta pregunta en alguna publicación en SO, así que explíquelo.¿Por qué '7' + 4 da '74', mientras que '7' - 4 da 3 en javascript?
Agradeciendo.
Leí esta pregunta en alguna publicación en SO, así que explíquelo.¿Por qué '7' + 4 da '74', mientras que '7' - 4 da 3 en javascript?
Agradeciendo.
El operador '+' se define para ambas cadenas y números, por lo que cuando se aplica a una cadena y un número, el número se convierte así cadena, entonces se concatenan las cadenas: '7' + 4 => '7' + '4' => '74' pero '-' sólo está definido para los números, no cadenas, por lo que la cadena '7' se convertirá en serie: '7' - 4 => 7 - 4 => 3
El operador +
está sobrecargado en JavaScript para realizar concatenación y adición. La forma en que JavaScript determina qué operación llevar a cabo se basa en los operandos. Si uno de los operandos es no de la clase Number
(o el tipo primitivo number
), entonces ambos serán emitidos en cadenas de concatenación.
3 + 3 = 6 3 + '3' = 33 '3' + 3 = 33 (new Object) + 3 = '[object Object]3'
El operador -
, sin embargo, es sólo para los números y por lo tanto los operandos siempre serán echados a los números durante la operación.
+
es el operador de concatenación de cadenas por lo que cuando hace '7' + 4
está forzando 4
en una cadena y añándolo. No existe tal ambigüedad con el operador -
.
Si quieres ser el uso inequívoco parseInt()
o parseFloat()
:
parseInt('7', 10) + 4
¿Por qué especificar la raíz a 10? Por lo tanto, '077'
no se analiza como octal.
Debido a + es la concentración, si desea agregar dos números que debe ellas analizar primero parseInt() y - SIGN es para la sustracción
El signo + en Javascript se interpreta como la concatenación primero y luego Además, debido a el hecho de que la primera parte es una cadena ('7'). Por lo tanto, el intérprete convierte la segunda parte (4
) en una cadena y la concatena.
En cuanto a '7' - 4
, no hay otro significado que no sea resta, por tanto, se hace la resta.
Nice que diecho. –