检查迭代JavaScript变量是否安全

Tre*_*ham 7 javascript

我有一个JavaScript函数,有人可以传递任何东西,我使用它迭代它的每个键

for x in obj
Run Code Online (Sandbox Code Playgroud)

句法.但是,如果它们传递一个原语(字符串或数字),则会导致错误; 正确的行为是函数对那些函数的行为方式与没有键的对象上的行为相同.

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

Mat*_*hen 7

x && typeof(x) === 'object'
Run Code Online (Sandbox Code Playgroud)

这对于对象和数组来说都是如此(尽管您通常不希望使用for..in迭代数组).

编辑:修复,每个CMS.

  • 好的测试,我唯一可以添加的是`typeof`是一元运算符而不是函数,所以parens只是在`x`周围表达然后应用运算符.此外,虽然我是迂腐和愚蠢的,因为`typeof`总是返回一个字符串,`==`运算符可能会更快.总而言之,这完全没问题...... (3认同)
  • Alex:为什么`==`比`===`更快?根据ECMAScript规范,在这种情况下,两种比较都将执行完全相同的步骤. (2认同)