È perfettamente sicuro.
(Come RobG fa notare, non ho fornire un riferimento alle regole del ponte DOM/JS se stessi e si raccomanda prudenza FWIW, credo -. Ma non hanno alcun riferimento a conclusivamente Stato - che ToInteger
è parte del bridge dell'interfaccia. Ecco un jsfiddle che mostra il timeout passato come una stringa, un float e un integrale (stesso tipo di float in JS) che funziona bene in FF8 e IE9. Risposte gradite.)
è perché the DOM interface only accepts integers per il ritardo in setTimeout/setInterval
- sì, questi sono definiti nel DOM, non in ECMAScript. Il valore del ritardo viene convertito in modo appropriato in un valore integrale per primo (e in questo aspetto la funzione [JS-internal] ToInteger
viene invocata che esegue un troncamento *).
Tuttavia, i numeri di esempio effettivamente produrrà risultati leggermente diversi (anche se potrebbe non essere notevole) :-)
Questo perché, 50/3
(16.66andsomemore
->16
) e 17
specificano diversi timeout .
Felice codifica.
* ToInteger
è definito come sign(number) * floor(abs(number))
, esclusi i casi particolari. Vedere la Sezione 9.4 della 5 ° edizione delle specifiche ECMAScript.
fonte
2011-12-12 01:27:35
Il modo in cui è definito, il secondo argomento è il "numero di millisecondi". Ora, se quel numero dovrebbe essere naturale non è definito ... –
@ ŠimeVidas È perfettamente definito. Vedi le specifiche DOM ;-) –