2011-06-24 9 views
5

1: ¿Por qué el resultado de foo && baz no es 1? Porque la verdadera es 1.¿Podría explicar estos dos ejemplos de javascript?

var foo = 1; 
var baz = 2; 

foo && baz; // returns 2, which is true 

2: Hay dos ventajas en el console.log(foo + +bar);, ¿cuál es el significado de ellos?

var foo = 1; 
var bar = '2'; 
console.log(foo + +bar); 
+0

Estas son dos preguntas muy separadas, probablemente deberían separarse. – Orbling

+5

Esto es javascript no jQuery. – Jazaret

Respuesta

10

Esto se debe a que el operador && ( Y lógico) devuelve el valor de la última operando se evalúa. Como foo es true, tiene que evaluar bar para determinar el resultado de la expresión (solo será true si bar es también).

Lo contrario ocurriría con el operador || (lógico O). En ese caso, dado que foo es true, se sabe que el resultado de la expresión es true sin tener que evaluar bar, por lo que se devolverá el valor de foo.

En relación con su segunda pregunta, el operador unario + permite convertir la cadena '2' en el número 2.

4

&& devuelve el valor del último valor evaluado. '& &' es un operador. La mayoría de las veces se utiliza en un contexto como este

if (something && somethingelse) {} 

en otras palabras

0 && 2 //would return 0 because 0 is a falsy value 
12 && 10 && 0 && 100 // would return 0 to 
10 && 123 && "abc" // returns "abc" 

+ es un operador matemático, sino que se puede utilizar para convertir una cadena en un número.

1 + 1 = 2 
1 + '1' = 11 //van damme would like this one 
1 + +'1' = 2 // somce '1' got converted to a number 
+0

+ '1' el más antes de '1' es un personaje convertido? estoy en lo correcto? – runeveryday

+1

no creo que haya sido por eso, pero funciona. Simplemente podría usar parseInt ('1') por ejemplo – meo

Cuestiones relacionadas