2012-06-04 83 views
-8

https://stackoverflow.com/questions/1684917/what-questions-should-a-javascript-programmer-be-able-to-answer需要回答幾個JavaScript問題?

我需要幾個答案來解答這裏發佈的問題嗎?

我正在迭代我定義的這個數組,它有3個元素在其中..數字1 2和3 ..爲什麼地球上是傑克出現?

Object.prototype.jack = {}; 

var a = [1,2,3]; 

for (var number in a) { 
    alert(number) 
} 

爲什麼它提醒不確定的,當我宣佈插孔變量是「傑克」?

<script> 
    (function() { 
     var jack = 'Jack'; 
    })(); 
    alert(typeof jack) 
</script> 

爲什麼它說對象,而不是數組?我將如何檢測它的數組?

array = [1,2]; alert(typeof array) 

我有兩個字符串,但第二次評估沒有成爲現實。這是一個潛在的錯誤?這是怎麼回事?

alert([typeof 'hi' === 'string', typeof new String('hi') === 'string' ] ) 
+6

要求個別的,有針對性的問題更具有建設性,因爲答案有益於更廣泛的人羣。 –

+0

請轉貼這些個人問題。請與你的一些想法 –

回答

3

對於第一個問題,在JavaScript中for-in構建體旨在遍歷對象屬性。由於您已將jack添加到所有對象的原型中,因此它會顯示。迭代在JavaScript中的數組的正確方法是用增量的for循環

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

對於第二個問題,您在匿名函數的範圍內聲明var jack。它不知道外面的警報。

// Declare outside. 
var jack; 
(function() { 
    jack = 'Jack'; 
})(); 
alert(typeof jack); 
0
  1. 因爲你真的不應該迭代陣列in,它越過對象的屬性(並拿起從Object.prototype「千斤頂」通過鏈)。改爲使用for循環代替.length
  2. 因爲它是在不同的範圍內聲明的。
  3. 因爲它是數組原型的對象。使用instanceof
  4. 因爲typeof任何對象,都是再次「對象」。