La lista che avete sono 5 dei valori 6 "falsy" in javascript. Se aggiungi "NaN" a questo, avresti tutti i valori falsy in javascript. Quindi la completa lista "falsy" è
1)0
2)""
3)false
4)undefined
5)null and
6)NaN
Quando utilizzato in un "if", questi tutti si comportano allo stesso modo in modo
if(0)
if("")
if(false)
if(undefined)
if(null) and
if(NaN) would behave the same
Avete chiesto una breve risposta concisa ma penso che il migliore modo mostra solo come funziona con alcuni test di base. Scuse per la risposta lunga
//Checking if all the "falsy" values evaluate the same way in a "if" statement
console.log("Checking if(0)");
if(0) {
console.log(" if(0) Will not be reached");
}
console.log('Checking if("")');
if("") {
console.log(' if("") Will not be reached');
}
console.log("Checking if(undefined)");
if(undefined) {
console.log("if(undefined) Will not be reached");
}
console.log("Checking if(null)");
if(null) {
console.log("if(null) Will not be reached");
}
console.log("Checking if(Nan)");
if(NaN) {
console.log("if(NaN) Will not be reached");
}
console.log("Checking if(false)");
if(false) {
console.log("if(false) Will not be reached");
}
// Verificando tutti i valori falsy sono uguali (==) tra loro in un if
if(0 == "") {
console.log('if(0 == "") is true');
}
if(0 == false) {
console.log("if(0 == false) is true");
}
if("" == false) {
console.log('if("" == false) is true');
}
if(0 == undefined) {
console.log("if(0 == undefined) Will not be reached");
}
if("" == null) {
console.log('if("" == null) Will not be reached');
}
if(undefined == null) {
console.log("if(undefined == null) is true");
}
if(NaN == "") {
console.log('if(NaN == "") Will not be reached');
}
// Controllo per strettamente uguaglianza tra falso e falsy valori if (undefined === false) { console.log ("Non sarà raggiunto"); }
if(null === false) {
console.log("Will not be reached");
}
if(undefined ===false) {
console.log("Will not be reached");
}
if(0 === false) {
console.log("Will not be reached");
}
if("" === false) {
console.log("Will not be reached");
}
if(NaN === false) {
console.log("Will not be reached");
}
Ciò significa che se questi valori "falsy" potrebbero essere utilizzati in un "if" intercambiabile, tutti non sono uguali (==) all'altro (particolare l'insieme di 0," "e falso con gli altri tre). Se viene usato un più rigido uguale (====), nessuno di questi sarebbe uguale a falso, quindi forse la classificazione "falsy" invece di false.
Vedere la risposta 'utente2549366'. Aiutato me. –
Penso che ci siano risposte migliori di quel link. –