私はJSLintの慣例に従おうとしていますが、コンテキストin
のように演算子を使用する際の奇妙な制限に直面していif (a in b) { ... }
ます.
この特定のオペレーターを許可する方法はありますか? ++ を += 1 に置き換えても問題ありませんがin
、 との類推はありません。これを許可しないことで、継承されたプロパティと独自のプロパティを一緒にプローブすることが、まったく理由もなく非常に面倒になります。
JSLint自体は使用hasOwnProperty
または比較を提案しundefined
ていますが、どちらも間違っています(プロパティが存在する可能性がありますが、値がundefined
の場合、問題のオブジェクトのプロトタイプでプロパティが宣言されている可能性があります)。
回避策は、オブジェクトのすべてのプロパティをループし、それらを問題のプロパティと比較することですが、これにより、O(1) 操作が O(n) に即座に変換されます...