javascript - 为什么 localStorage ["..."] 未定义,但 localStorage.getItem ("...") 为空?

标签 javascript null local-storage undefined

我上次检查时,以下两行返回 true:

null == localStorage["foo"];
null == localStorage.getItem("foo");

null 替换为 undefined 时同样适用。 那么第一个问题是,为什么有两种方式来寻址localStorage?为什么

localStorage["foo"]

返回 undefined

localStorage.getItem("foo")

返回 null?

我在开发 JS 时需要注意这一点吗?

最佳答案

Web Storage Specification requires .getItem() 为未知 key 返回 null

但是请注意,.getItem().setItem() 在 IDL 中专门定义为指定的 gettersetter Storage 接口(interface),因此它们也是访问存储内容的完全支持的方式。

然而,[] 语法更类似于普通的对象和/或数组属性 getter,就像那些为未知属性名称返回 undefined 一样。

使用 [] 语法的原因是它会首先对对象属性进行操作,并且很乐意让您覆盖 的真实属性和方法>localStorage 对象,c.f:

> localStorage['getItem'] = function() { return 0 }
> localStorage.getItem('getItem')
0

关于javascript - 为什么 localStorage ["..."] 未定义,但 localStorage.getItem ("...") 为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29519452/

相关文章:

javascript - 使用 chrome 扩展时访问 CSS 中的本地存储?

javascript - AngularJS bool 值总是在范围内返回 true

Javascript:变量值在循环中永远不会改变

sql - 我的香蕉在哪里? (SQL查询NULL问题)

json - 包含空值的 BsonDocument 的 Newtonsoft.Json.JsonConvert.SerializeObject 因 InvalidCastException 而失败

android - OpenFileOutput() 方法未定义!

javascript - 如果在 primefaces 数据表中添加新行,如何检测表单的变化

javascript - 数量价格折扣 html/java/php

c - 在 C 中,在结束前包含 NULL 的内存块上调用 free() 是否安全?

javascript - 使用 AngularJS 防止在 Localstorage 中添加重复项