最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

js中的forin循環(huán)和for循環(huán)有什么區(qū)別

來源:懂視網(wǎng) 責編:小采 時間:2020-11-27 20:13:27
文檔

js中的forin循環(huán)和for循環(huán)有什么區(qū)別

js中的forin循環(huán)和for循環(huán)有什么區(qū)別:JavaScript for...in 語句for...in 語句用于對數(shù)組或者對象的屬性進行循環(huán)操作。for ... in 循環(huán)中的代碼每執(zhí)行一次,就會對數(shù)組的元素或者對象的屬性進行一次操作。Tip:for-in循環(huán)應該用在非數(shù)組對象的遍歷上,使用for-in進行循環(huán)也被稱為枚舉?!?/div>
推薦度:
導讀js中的forin循環(huán)和for循環(huán)有什么區(qū)別:JavaScript for...in 語句for...in 語句用于對數(shù)組或者對象的屬性進行循環(huán)操作。for ... in 循環(huán)中的代碼每執(zhí)行一次,就會對數(shù)組的元素或者對象的屬性進行一次操作。Tip:for-in循環(huán)應該用在非數(shù)組對象的遍歷上,使用for-in進行循環(huán)也被稱為枚舉。·

JavaScript for...in 語句

for...in 語句用于對數(shù)組或者對象的屬性進行循環(huán)操作。

for ... in 循環(huán)中的代碼每執(zhí)行一次,就會對數(shù)組的元素或者對象的屬性進行一次操作。

Tip:for-in循環(huán)應該用在非數(shù)組對象的遍歷上,使用for-in進行循環(huán)也被稱為“枚舉”。·

語法:

for (變量 in 對象)
{ 在此執(zhí)行代碼}

“變量”用來指定變量,指定的變量可以是數(shù)組元素,也可以是對象的屬性。

實例:使用 for ... in 循環(huán)遍歷數(shù)組。

<html><body><script type="text/javascript">var x
var mycars = new Array()
mycars[0] = "Saab"
mycars[1] = "Volvo"
mycars[2] = "BMW"
for (x in mycars)
{
document.write(mycars[x] + "<br />")
}</script></body></html>

注意一:for in循環(huán)不會按照屬性的下標來排列輸出。

//code from http://caibaojian.com/js-loop-for-in.html"first":"first", "zoo":"zoo", "2":"2", "34":"34", "1":"1", "second":"second"};for (var i in obj) { console.log(i); };
輸出:1234firstzoosecond

執(zhí)行時按chrome執(zhí)行,先把當中的非負整數(shù)鍵提出來,排序好輸出,然后將剩下的定義時的順序輸出。由于這個奇葩的設定,讓avalon的ms-with對象排序不按預期輸出了。只能強制用戶不要以純數(shù)字定義鍵名。

實例1:在數(shù)組的原型對象上定義了一個新的屬性,使用for循環(huán)沒出現(xiàn)問題

function getNewArray(){var array=[1,2,3,4,5];Array.prototype.age=13;
var result = [];for(var i=0;i<array.length;i++){
result.push(array[i]);
}alert(result.join(''));
}

實例2:采用了for in循環(huán),但是給我們期望的一樣還是得到了12345的正確結(jié)果

function getArrayTwo(){var array=[1,2,3,4,5 ];
var result=[];
for(var i in array){
result.push(array[i]);
}alert(result.join(''));
}

實例3:給原型添加屬性之后,默認情況下枚舉,最后輸出1234513

function getNewArrayTwo(){var array=[1,2,3,4,5 ];
Array.prototype.age=13;var result=[];
for(var i in array){
result.push(array[i]);
}alert(result.join(''));
}

所以建議不要對數(shù)組執(zhí)行for in循環(huán),事實上,在高性能javascript這本書中,也強調(diào)了for in循環(huán)的不好,因為它總是會訪問該對象的原型,看下原型上是否有屬性,這在無意中就給遍歷增加了額外的壓力。

解決方法:

如果某個對象具有給定名稱的屬性,那么Object.prototype.hasOwnProperty(name)返回true。如果該對象是從原型鏈中繼承了該屬性,或者根本沒有這樣的一個屬性,則返回false。通過hasOwnProperty限定for in循環(huán)在當前中遍歷,而不用去考慮它的原型屬性。

function finalArray(){var array=[1,2,3,4,5 ];
Array.prototype.age=13;
var result=[];for(var i in array){if(array.hasOwnProperty(i)){
result.push(array[i]);
}
}alert(result.join(''));
}

注意事項:

1.有一部分瀏覽器,例如早期的safari瀏覽器,不支持這個方法

2.對象經(jīng)常被用作哈希值,這就是存在hasOwnProperty被另外的屬性屏蔽的風險(但是我估計沒有人那么無聊使用這個屬性)

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

js中的forin循環(huán)和for循環(huán)有什么區(qū)別

js中的forin循環(huán)和for循環(huán)有什么區(qū)別:JavaScript for...in 語句for...in 語句用于對數(shù)組或者對象的屬性進行循環(huán)操作。for ... in 循環(huán)中的代碼每執(zhí)行一次,就會對數(shù)組的元素或者對象的屬性進行一次操作。Tip:for-in循環(huán)應該用在非數(shù)組對象的遍歷上,使用for-in進行循環(huán)也被稱為枚舉?!?/div>
推薦度:
標簽: 區(qū)別 in js
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top