国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

setTimeout與setInterval在不同瀏覽器下的差異

2024-05-06 14:11:43
字體:
供稿:網(wǎng)友
。(新手可能認(rèn)為setTimeout與setInterval是javascript函數(shù),這是錯(cuò)誤的。新手容易將javascript對象函數(shù)與DOM對象方法混淆。)

先來一段代碼,大家猜猜在各種瀏覽器下的結(jié)果會是怎么樣的呢?
代碼如下:
function f(){
var s = 'arguments.length:'+arguments.length+'; ';
for(var i=0,n=arguments.length;i< n;i++){
s += ' ['+i+']:'+arguments[i]+'; ';
}
alert(s);
}
setTimeout(f,500,"javascript","AAA")

我這里要探討的,不是什么時(shí)候該用哪一個(gè),而是探討這兩個(gè)方法在各瀏覽器中的差異。
原先我一直沒覺得這兩個(gè)方法會有什么烏龍,一個(gè)偶然的機(jī)會讓我得知了,現(xiàn)在整理一下寫出來和大家分享。
因?yàn)閟etTimeout與setInterval的參數(shù)和用法是一樣的,只是功能不同,所以,為了省事,我下面只以setTimeout為例進(jìn)行說明以及舉例。
setTimeout被最經(jīng)常用到的形式大概是如下2種樣子的:
代碼如下:
iTimerID = setTimeout(strJsCode, 50) //strJsCode為一個(gè)包含js代碼的字符串
iTimerID = setTimeout(objFunction, 50) //objFunction為一個(gè)函數(shù)對象

第一種調(diào)用方式是傳包含js代碼的字符串,這種方式的好處是簡潔,但壞處是運(yùn)行效率差,而且不利于語法解析,有潛在風(fēng)險(xiǎn),更重要的是,處理比較復(fù)雜的內(nèi)容比較費(fèi)勁,這一點(diǎn)和eval的弊端是一致的。
所以,我們認(rèn)為,通常應(yīng)當(dāng)采用第二種方式調(diào)用為好。(后面我的例子均采用第2種調(diào)用方式)

現(xiàn)在來揭曉開頭那一段代碼在各種瀏覽器下的結(jié)果:
IE(6,7,8)是: arguments.length:0;
Opera(6,7,8)是: arguments.length:2; [0]:javascript; [1]:AAA;
Firefox(3.0)是: arguments.length:3; [0]:javascript; [1]:AAA; [2]:-15;
竟然有這么大的差別,還真是“你唱你的曲,我哼我的調(diào)”!
Firefox(3.0)下,得出的最后一個(gè)數(shù)字是不特定的,有時(shí)候是0,有時(shí)候是一個(gè)負(fù)數(shù),這問題后面再說。
(一)IE系列中的setTimeout
首先,我們看看微軟出的DHTML參考手冊中是如何說的:
setTimeout Method
Evaluates an expression after a specified number of milliseconds has elapsed.
Syntax
iTimerID = window.setTimeout(vCode, iMilliSeconds [, sLanguage])
Parameters
vCode Required. Variant that specifies the function pointer or string that indicates
the code to be executed when the specified interval has elapsed.
iMilliSeconds Required. Integer that specifies the number of milliseconds.
sLanguage Optional. String that specifies one of the following values:
JScript Language is JScript.
VBScript Language is VBScript.
JavaScript Language is JavaScript.
MSDN上關(guān)于setTimeout的說明:
http://msdn.microsoft.com/en-us/library/ms536753(VS.85).aspx
也就是說,setTimeout接收3個(gè)參數(shù),第3個(gè)參數(shù)表示腳本語言的類型,如果你再傳入更多的參數(shù),是無意義的。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 平顺县| 信丰县| 墨江| 洞头县| 嘉禾县| 洪江市| 会昌县| 保靖县| 江山市| 高邮市| 曲松县| 怀安县| 保康县| 安图县| 山阴县| 北票市| 万安县| 灌云县| 大城县| 西充县| 阳谷县| 伊金霍洛旗| 金平| 泗洪县| 新建县| 太和县| 南阳市| 甘德县| 东港市| 海盐县| 股票| 顺义区| 泾阳县| 广安市| 阜新市| 四川省| 子洲县| 黄山市| 亚东县| 梁平县| 万山特区|