当我尝试循环使用这样的int时会发生什么:
var x = 0;
for (var k in x) {
// x[k]
}
我应该寻找意外行为还是不进入循环? (到目前为止,我的实验似乎表明它没有进入循环......但它可以做一些我看不到的事情)
答案 0 :(得分:2)
vanilla JavaScript Number对象原型中没有定义方法。您的代码进入循环(JS中的所有对象都可以迭代)但在这种情况下没有任何东西可以迭代。
如果你愿意:
Number.prototype.foo = "bar";
您的循环体将为foo
属性运行一次。
答案 1 :(得分:1)
x不是一个集合。有什么可以迭代?
答案 2 :(得分:0)
只能使用for in
循环迭代对象。
所以,假设你有一个变量a
,它包含对某事物的引用。如果typeof a !== 'object'
则您无法迭代a
var。
请注意,您可以迭代数组,因为数组也是对象(alert(typeof [])
)。
至于你的例子,x不是一个对象,它是一个数字(typeof x == 'number'
),所以for in
不起作用;但如果您将您的号码声明为Number
对象:
var x = new Number(0);
你可以从现在typeof x == 'object'