`prop in localStorage` vs `localStorage.getItem('prop')!==null`

`prop in localStorage` vs `localStorage.getItem('prop')!==null`

this问题的答案推荐:

localStorage.getItem('prop') !== null

但是,我想保持我的代码一致,我想使用:

'prop' in localStorage

第二种形式有什么问题吗?从速度上来说,应该快的差不多了。

您应该使用 getItem(prop) !== null 测试,因为 in 无法区分存储在 localStorage 中的值与该对象的不可枚举属性(或从其原型链继承的属性) ).

一个很好的例子是'getItem' in localStorage === true

这个区别是 the in operator 会遍历原型链,但是 getItem 只会 return 对象本身的数据集。

所以像这样的东西总是 return true,即使你从来没有用那个键设置项目:

'toString' in localStorage

这可能不是预期的行为,因此在这种情况下您可能希望避免它。

您可以获得更一致的代码的一种方法是使用 the hasOwnProperty method。此方法适用于所有对象,包括 localStorage。请记住,它的行为确实不同于 getItemin,因为它 return 是布尔值,不会遍历原型链。