No, non stiamo parlando della composizione fisica della materia! Con questo articolo inizia una serie di approfondimenti su ciò che è "vero" e ciò che è "falso" in JavaScript. Il linguaggio più usato al mondo infatti ha dei comportamenti poco intuitivi che rischiano di confondere e creare errori di programmazione.
Tanto per incuriosirvi, eccovi il primo:
Come già saprete, una stringa vuota corrisponde a FALSE. Ma come mai l'espressione ("ciao") corrisponde a TRUE mentre ("ciao"==true) a FALSE? "ciao" non viene forse interpretato proprio come TRUE? Oltretutto non sto neanche usando l'operatore "===", quindi il diverso tipo degli operandi non dovrebbe essere rilevante...
Il punto è che bisogna non bisogna considerare i singoli operandi bensì il risultato dell'espressione nella sua interezza! Proviamo a riscrivere il codice in un altro modo:
Ecco, così il concetto è un po' più chiaro, ma i motivi che stanno dietro a questo strano comportamento si possono trovare soltanto nella specifica ECMASCRIPT:
A presto per una nuova puntata di JS Quiz!
Tanto per incuriosirvi, eccovi il primo:
Il punto è che bisogna non bisogna considerare i singoli operandi bensì il risultato dell'espressione nella sua interezza! Proviamo a riscrivere il codice in un altro modo:
- "ciao" corrisponde a TRUE perchè il risultato di un'espressione costituita soltanto da una stringa è FALSE se la stringa è vuota (la sua lunghezza è zero), altrimenti è TRUE.
- "ciao" è diverso da TRUE perchè l'operatore "==" in caso di confronto tra booleano e stringa converte quest'ultima in numero e lo confronta con i valori numerici di TRUE e FALSE ovvero 1 e 0. Una stringa non numerica e non vuota però viene convertita in NaN ("ciao" * 1 -> NaN), che è diverso da 1.
A presto per una nuova puntata di JS Quiz!
Commenti
Posta un commento