日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

javascript中的for in循环和for循环的使用

發布時間:2025/3/21 javascript 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 javascript中的for in循环和for循环的使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原文鏈接:http://caibaojian.com/js-loop-for-in.html

javascript for...in 語句

for...in 語句用于對數組或者對象的屬性進行循環操作。

for ... in 循環中的代碼每執行一次,就會對數組的元素或者對象的屬性進行一次操作。

viaTip:for-in循環應該用在非數組對象的遍歷上,使用for-in進行循環也被稱為“枚舉”。原文來自:http://caibaojian.com/js-loop-for-in.html

語法:

for (in 象) { 碼 }

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

實例:使用 for ... in 循環遍歷數組。

<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>

應用可見這里:http://caibaojian.com/js-max-repeat.html

注意一:for in循環不會按照屬性的下標來排列輸出。http://www.cnblogs.com/rubylouvre/p/3396042.html

"first":"first","zoo":"zoo","2":"2", "34":"34", "1":"1", "second":"second" }; for (var i in obj) { console.log(i); }; 1 2 34 first zoo second

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

實例1:在數組的原型對象上定義了一個新的屬性,使用for循環沒出現問題

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循環,但是給我們期望的一樣還是得到了12345的正確結果

//code from http://caibaojian.com/js-loop-for-in.html 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('')); }

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

解決方法:

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

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.對象經常被用作哈希值,這就是存在hasOwnProperty被另外的屬性屏蔽的風險(但是我估計沒有人那么無聊使用這個屬性)

轉載于:https://www.cnblogs.com/lzm1989/p/5967832.html

總結

以上是生活随笔為你收集整理的javascript中的for in循环和for循环的使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。