2012-02-08 7 views
5

Qual è lo scopo dell'utilizzo di // nel seguente codice. Se i vecchi browser non supportano javascript, i simboli <!-- --> ignoreranno il codice js. Nel caso in cui i browser supportino JS, questi simboli <!-- --> verranno ignorati. Quindi utilizza l'uso dei simboli //.Commento in JavaScript

<html> 
<body> 
<script type="text/javascript"> 
<!-- 
document.getElementById("demo").innerHTML=Date(); 
//--> 
</script> 
</body> 
</html> 

risposta

7

Se i vecchi browser non supportano javascript, i simboli <!-- --> ignoreranno il codice js.

È vero, supponendo HTML e per una definizione di "vecchi browser" uguale a "Era Netscape 1". Don't use them today.

Nel caso in cui i browser supportino JS, questi simboli <!-- --> verranno ignorati.

Solo mezzo vero. Solo l'inizio del commento è speciale. Da the specification:

Il motore JavaScript permette la stringa "<!--" a verificarsi all'inizio di un elemento script e ignora ulteriori caratteri fino alla fine della riga. JavaScript interpreta "//" come inizio di un commento che si estende fino alla fine della riga corrente. Questo è necessario per nascondere la stringa "-->" dal parser JavaScript.

+0

ottima risposta. risposta molto più concreta della mia! –

+0

ma se non ci nascondiamo usando '//' non succede nulla di peggio. Il codice funziona come dovrebbe in Firefox? – sandbox

+1

I browser sono davvero bravi a recuperare da & ^% $, ma non sono sempre coerenti nel modo in cui lo fanno. – Quentin

4

-- è un operatore JavaScript. È usato per non confondere il parser.

Non hai davvero bisogno di quei commenti HTML, BTW.

+0

Ma perché è '->' nei commenti, e ' Konerak

+0

@Konerak - La risposta di Quentin è più completa. –

1

Questa è una caratteristica non-standard che browser e motori JavaScript sono sempre attuate. Al giorno d'oggi, non può essere rimosso, in quanto ciò romperebbe la compatibilità all'indietro. E 'detailed in the JavaScript/Web ECMAScript spec:

<!-- devono essere trattati come l'inizio di una SingleLineComment - equivalente a //.

var x = true; 
<!-- x = false; // note: no syntax error 
x; // true 

--> all'inizio di una riga, eventualmente preceduto da spazi o MultiLineComment s, devono essere trattati come SingleLineComment - equivalente a //.

var x = true; 
--> x = false; // note: no syntax error 
x; // true 

var x = 1; 
/* 
multiline comment! 
x = 2; 
*/ --> x = 3; 
x; // 1