2014-11-11 11 views

risposta

11

Nel primo caso, non è chiaro al parser che {} rappresenta un valore.

le seguenti opere:

var a = {}; 
a == false  // false 

Oppure, in alternativa è possibile utilizzare:

({}) == false // false 

Quindi questo non è qualcosa di specifico confronto con il valore - piuttosto, è il modo in cui il codice viene analizzato.

Bella domanda!

3

Se si esegue solo {}, si nota che non viene analizzato come un oggetto - fornisce undefined! Chiaramente, viene analizzato come un blocco di codice. Quindi, {} == false è un errore di sintassi poiché non c'è niente sul lato sinistro di ==.

{}variableName non è un errore di sintassi per lo stesso motivo: è un blocco di codice vuoto.

Se lo si avvolge tra parentesi, viene analizzato correttamente come oggetto letterale e funziona.

({}) == false 
0

Anche questo funziona,

/{}/ == false; // false 
+0

Come hai risposto dopo che è stato chiuso come un duplicato ?? – Scimonster

+0

Non ho visto, dopo aver postato solo, l'ho visto come duplicato. Scusa –

+0

Voglio dire, tecnicamente, come ti ha permesso? – Scimonster

Problemi correlati