用于循环除了对象之外的东西

时间:2011-09-20 09:41:55

标签: javascript

当我尝试循环使用这样的int时会发生什么:

var x = 0;
for (var k in x) {
  // x[k]
}

我应该寻找意外行为还是不进入循环? (到目前为止,我的实验似乎表明它没有进入循环......但它可以做一些我看不到的事情)

3 个答案:

答案 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'

循环其方法