我有一个JavaScript函数,有人可以传入任何内容,然后使用
迭代每个键。for x in obj
语法。但是,如果它们传递一个原语(字符串或数字),则会导致错误;正确的行为是函数对那些函数采取相同的行为,就像没有键的对象一样。
我可以用try..catch
块来解决这个问题,但还有其他(更简洁)的方法吗?
答案 0 :(得分:7)
x && typeof(x) === 'object'
对象和数组也是如此(尽管您通常不希望使用for..in迭代数组)。
编辑:根据CMS进行修复。
答案 1 :(得分:2)
有很多方法可以推断出来,这是一个很好的方法:
function isIterable(obj) {
if (obj && obj.hasOwnProperty) {
return true;
}
return false;
}
你可以选择其中一些。