2010-06-07 11 views

Respuesta

23

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

15

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.

+0

tengo que amar la forma en que funciona Java y todos los errores divertidos que causa. – pxl

+0

woops, significa javascript, tipeado java. – pxl

+0

Nadie hizo una broma acerca de escribir débil aquí? Eso me decepciona. –

29

+ 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.

+3

Por las dudas: utilice parseInt ('7', 10) con el parámetro base, de modo que '077' no se confunda como un entero octal. – Residuum

+0

@Residuum excelente punto. – cletus

+1

O ... se puede usar 'Número ('077')' el cual actúa un poco como 'parseFloat' y siempre trata a cadenas como base 10. –

2

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

2

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.

Cuestiones relacionadas