2013-08-14 12 views

risposta

15

La dichiarazione "use strict"; non dovrebbe causare problemi con IE8/9 nella misura in cui i browser eseguiranno il codice. (E 'stato progettato in questo modo, al fine di garantire che non ci siano problemi con i browser che non implementano modalità rigorosa)

fonte esterna: http://ejohn.org/blog/ecmascript-5-strict-mode-json-and-more/

Questo significa che è possibile attivare la modalità rigorosa sulla negli script - oggi - e avrà, nel peggiore dei casi, nessun effetto collaterale nei vecchi browser.

NOTA: come Jeremy ha sottolineato nei commenti, ci sono alcune espressioni che sono tecnicamente valida, ma non riuscirà a IE8 (ad esempio: var x = {}; x.break = true non funziona in IE8 anche se funzionerà in IE9).

+4

*** Per lo più vero. ** * C'è una certa sintassi permessa in modalità rigorosa che fallirà al di fuori della modalità strict. In particolare, utilizzando parole chiave come proprietà dell'oggetto. 'myObject.break = true' funziona in modalità rigorosa, fallisce al di fuori di esso. –

+0

@JeremyJStarcher sembra che 'var x = {}; x.break = true' funziona in IE9 (l'ho appena testato in F12). Hai accesso a IE9 e puoi verificare? – SheetJS

+0

Errore in IE7 (modalità Quirks): utilizzare gli strumenti di sviluppo per modificarlo e riprovare. Il mio punto è che la modalità rigorosa non è sempre compatibile al 100% con la modalità non rigorosa. –

3

Sì, dovrebbe andare bene.

use directives sono pensati per essere retrocompatibili. I browser che non li supportano vedranno solo un valore letterale String che non viene ulteriormente referenziato. Quindi, passeranno oltre e andranno avanti.

Tuttavia, si vorrà comunque essere sicuri di testare il codice sia con che senza abilitato.

Problemi correlati