在博客園上面注冊的賬號已經有七個月了,七個月的時間里一直在博客園上面看大家發的技術文檔或者自己的想法,感覺自己還是挺有收獲的。也一直想要寫出高質量的博文來,但是這東西感覺沒有積累沒有沉淀是寫不出來的,越急就越寫不出來,越擔心犯錯也越寫不出來,犯錯了與其自己心里憋着難受還不如寫出來,希望大家多多指點。好了,廢話不多說了,切入主題。
最近在學習javascript的知識,在學習的過程中發現javascript中的for循環和for...in循環還是有些區別的,比如定義一個數組,然后用for..in循環輸出
var array=[1,2,3,4,5,6]; for(var s in array) { console.log(s+' '); }
輸出的結果是0 1 2 3 4 5 竟然不是輸出1-6。然后又定義了個比較有區分的(姑且這么叫吧)數組
var array=['jack','marry','jackson']; for(var s in array) { console.log(s+' '); }
輸出0 1 2 這樣看起來for..in輸出的是數組的索引,而不是數組內容,以前在學習C#的時候for..in輸出的是數組中的原始值,而不是索引 。平時在學習javascript還是有點受C#語法的影響了,這里提出來希望和我一樣的同志長點心了。
但是如果是定義一個對象,對象中有屬性,並且給屬性賦初始值,那么用for..in輸出的是屬性名,且看下面:
var obj = new Object(); obj.name = '大象'; obj.value1 = '12'; obj.value2 = '334'; for (var items in obj) { console.log(items); }
輸出的是 name、 value1、 value2。這樣看來在對象中屬性就相當於對象中的索引。
下附一篇文章http://www.2cto.com/kf/201311/257181.html 里面是對for..in循環會把一些類型的原型(prototype)中方法與屬性給遍歷出來的問題,因那篇文章講的比較易懂,大家自己看看。
PS:這是我的第一篇博文,剛開始寫的時候手生,表達的也有不當的地方,歡迎大家指出。