我对这里发布的问题几乎没有答案?。
我正在迭代我定义的这个数组,里面有3个元素..数字1 2和3 ..为什么地球上出现杰克?
Object.prototype.jack = {};
var a = [1,2,3];
for ( var number in a ) {
alert( number )
}
当我将jack变量声明为'Jack'时,为什么它会提示未定义?
<script>
(function() {
var jack = 'Jack';
})();
alert(typeof jack)
</script>
为什么说对象而不是数组?我如何检测它是否是一个数组?
array = [1,2]; alert( typeof array )
我有两个字符串,但第二个评估不成立。这是一个潜在的错误吗?怎么回事呢?
alert( [typeof 'hi' === 'string', typeof new String('hi') === 'string' ] )
答案 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);
答案 1 :(得分:0)
in
来迭代数组,这会覆盖对象属性(并从Object.prototype
通过链获取“jack”)。使用for
循环代替.length
。instanceof
。typeof
任何对象,再一次是“对象”。