检查迭代JavaScript变量是否安全

时间:2010-06-22 22:26:19

标签: javascript

我有一个JavaScript函数,有人可以传入任何内容,然后使用

迭代每个键。
for x in obj

语法。但是,如果它们传递一个原语(字符串或数字),则会导致错误;正确的行为是函数对那些函数采取相同的行为,就像没有键的对象一样。

我可以用try..catch块来解决这个问题,但还有其他(更简洁)的方法吗?

2 个答案:

答案 0 :(得分:7)

x && typeof(x) === 'object'

对象和数组也是如此(尽管您通常不希望使用for..in迭代数组)。

编辑:根据CMS进行修复。

答案 1 :(得分:2)

有很多方法可以推断出来,这是一个很好的方法:

function isIterable(obj) {
  if (obj && obj.hasOwnProperty) {
    return true;
  }
  return false;
}

你可以选择其中一些。