2011-12-12 89 views

回答

4

因爲瀏覽器有不同的參數對象的實現。對於跨瀏覽器方法,請改用length屬性。

(function() { 
     for (var i=0, nLength = arguments.length; i < nLength; i++) { 
      alert(arguments[i]); 
     } 
    })(1,2,3); 
+5

另外作爲一般規則,當您可以使用常規for循環時,絕不應使用'for var i in'。 –

+0

大鼠。你比我快。 :) – piersadrian

+0

@PeterWilkinson - 建議你不應該使用'for/in'循環迭代數組的項目。使用它來迭代對象的屬性是非常好的(事實上,這是推薦的方法)。在這種情況下'arguments'是一個僞數組,因此您應該使用迭代的數組方法。 – jfriend00

0

arguments對象實際上是不是一個數組,雖然它的行爲就像一個在某些方面。這是一個特殊的對象,默認情況下缺少大多數JavaScript array的方法(儘管您可以使用apply()手動應用這些方法),並且包含length屬性。

爲了訪問參數本身,只需使用標準for循環遍歷arguments對象。 JavaScript的for-in聲明適用於array的內容,但有一些重要的例外,但不是這種陣列式的結構。

for (var i = 0, numArgs = arguments.length; i < numArgs; i++) { 
    console.log(arguments[i]); 
} 

希望有幫助!

相關問題