Siéntete libre de divulgar nuestra página y códigos con otro, necesitamos tu ayuda para hacer crecer nuestra comunidad.
Solución:
los string ' '
es un valor de “veracidad”.
Aquí hay una lista de los valores “falsos”:
false
null
undefined
0
NaN
''
Tienes que entender que “verdad” no es lo mismo que true
. Un valor puede ser “veraz” sin ser true
. Por ejemplo, si hiciéramos 5 == true
obtendríamos false
aunque 5
es un valor de “veracidad”.
En general, casi todos los valores son “verdaderos” (excluyendo los mencionados anteriormente). Pero, la forma más fácil de verificar si algo es “verdadero”/”falso” es haciendo algo como esto:
var value = valueToTest;
if (value)
console.log('Truthy!');
else
console.log('Falsy!');
Es un string de espacios en blanco ¿verdadero o falso?
Es cierto, como otros indicaron. Sin embargo, su comparación
' ' == true
es no comprobando si ' '
es veraz Está comparando dos valores, que es algo diferente y usa reglas de comparación específicas. La especificación JS es que cualquier ==
la comparación con un booleano primero fuerza el booleano a un número:
Si Type(y) es booleano, devuelve el resultado de la comparación
x == ToNumber(y)
.
Entonces tu código es equivalente a
' ' == Number(true)
que es lo mismo que
' ' == 1
A continuación, para comparar un string y un número, JS convierte el string a un número Nuevamente, citando la especificación:
Si Tipo(x) es Cadena y Tipo(y) es Número, devuelva el resultado de la comparación
ToNumber(x) == y
.
Así que ahora tenemos
Number(' ') == 1
Number(' ')
es 0
. La especificación dice:
El MV de StringNumericLiteral ::: StrWhiteSpace es 0.
Así que esto se convierte
0 == 1
que, como has descubierto, es false. Consulte http://ecma262-5.com/ELS5_HTML.htm#Section_11.9.3 para obtener detalles.
Como otras respuestas han explicado que no son iguales (==
) para true
no es lo mismo que ser falso. Falso es un concepto diferente, que significa aproximadamente el valor al que se fuerza una expresión cuando se requiere un booleano (como la condición de un if
declaración) es false.
valoraciones y reseñas
Agradecemos que desees animar nuestra función poniendo un comentario y dejando una valoración te damos las gracias.