萬盛學電腦網

 萬盛學電腦網 >> 腳本專題 >> javascript >> javascript中for in 和 for each in的區別

javascript中for in 和 for each in的區別

   javascript中for in 和 for each in的區別

        兩個的作用都用來遍歷對象,但為什麼有了for in語句了還要for each in語句呢,後來看了下for each in開發的文檔,for each in是作為E4X標准的一部分在javascript 1.6中發布的,而且它不是ECMAScript標准的一部分

  區別一:

  for in是javascript 1.0 中發布的。

  for each in是作為E4X標准的一部分在javascript 1.6中發布的,而它不是ECMAScript標准的一部分。

  這將意味著存在各種浏覽器的兼容性問題。for each in,對很多浏覽器都不支持的。例如是不支持IE6,IE7,IE8等浏覽器的。

  區別二:

  例: var 長方形= { 高:"15", 寬:"25" };

  ?

1 2 3 for (var i in 長方形){ alert( i + "," + 長方形[i] ); }

  結果依次是: 高,15 ; 寬,25 ;

  ?

1 2 3 for each (var i in 長方形){ alert( i + "," + 長方形[i] ); }

  結果依次是: 15, undefined ; 25, undefined;

  兩種遍歷方法的變量i的值是不一樣的,for each in無法獲得對象的屬性名,只能獲取到屬性值。

  最後總結一下使用建議:

  (1)遍歷普通數組,建議使用原生的遍歷方法for,不要貪圖方便,因為for in 和for each in均存在浏覽器的兼容問題,不能保證它們對數組的遍歷順序(如果對順序的不作要求的話,可以使用for in ,但本人不建議),有興趣話,可以閱讀的下一篇文章《關於js中for in的缺陷淺析》。

  (2)遍歷對象,由於for沒辦法提供理想的遍歷,因而只能選擇其他方法。這裡建議使用for in ,從上面講解的區別,for in比for each 更具優勢,for in能獲取索引和屬性值,而for each只能獲取屬性值,而且for each在很多低版本的浏覽器是不支持。

  以上所述就是本文的全部內容了,希望大家能夠喜歡

copyright © 萬盛學電腦網 all rights reserved