Ho un problema con un codice molto semplice scritto in Javascript, potresti aiutarmi per favore?Variabili non definite, valore == false contro valore!
Ecco cosa penso di avere a capire finora su JavaScript e le variabili:
- un valore indefinito viene valutata false in un'operazione booleana
- Utilizzando un operatore == in una comparazione, si' chiedendo se due valori sono confrontabili indipendentemente dai loro tipi
Ho trovato un file di esercitazione in un corso online e ho provato a farlo, ma non ho ottenuto lo stesso risultato previsto nella lezione; il problema principale era che stavo confrontando il valore con un "if value == false {...}" mentre la soluzione utilizzava "if! value {...}"
Quindi ho deciso di scrivere un codice molto breve per provarlo da solo, ma sto ottenendo risultati misti. Qui nell'esempio seguente mi aspetto che questo codice JS generi due avvisi identici ("foo è uguale a false"), ma invece la prima istruzione if restituisce "foo NON è uguale a false" mentre il secondo se restituisce (come previsto) "foo è uguale a false".
questo è ciò che scritto:
var foo = undefined;
if (foo == false) {
alert("foo is equal to false");
} else {
alert("foo is not equal to false"); // Javascript executes this row
}
if (!foo) {
alert("foo is equal to false"); // Javascript executes this row
} else {
alert("foo is not equal to false");
}
AFAIK i due FI dovrebbe fare lo stesso lavoro, e infatti quando ho provato sostituendo nella prima riga il valore "var foo = indefinito;" con "var foo = 0;" ha funzionato come previsto, e 0 è un altro valore che dovrebbe essere valutato come falso, o almeno questo è ciò che ricordo.
Potresti dirmi cosa sto facendo male?
Questo perché non è uguale a 'false'. Comunque undefined è falso così '! Undefined' -> true – Raynos
Qual è la differenza tra essere uguali a false e" falsi "? – Cesco
se uguale allora 'x == falso 'se falso quindi'! X == true' – Raynos