0

特别是对于localStorage.foo

对于 Safari,它设置为:

undefined

对于 Firefox,它设置为:

null

有人知道 Chrome 和 IE 的值吗?

为什么不一样?只是浏览器程序员的随机选择?

4

1 回答 1

6

它总是undefined。也许您的观察方法使您相信不同浏览器中的值不同。

哦,我将为旧版本的 IE 限定该声明,据我所知,它可能会做一些其他事情。我敢打赌他们undefined也用。

啊——主角先生有一个有趣的观点。在任何普通对象上,不存在的属性将是null. 但是,Firefox 确实似乎确实报告null了一个不存在的属性的值,特别是localStorage. 嗯...我的投票是那是一个错误,但我会检查 w3c 规范(或 proto-spec 或任何它)。

“价值”undefined并不是真正的价值。这更像是佛教的——有点像在说,“你所要求的没有意义”。nullJavaScript 中的值的处理方式与undefined. 因此:

var a = {};
var b = a.banana;

变量“b”将是undefined。这很奇怪,但它可以让您区分存在null的属性与缺少的属性之间的区别。(当然,in操作员也可以让您弄清楚。)

于 2012-07-06T20:58:21.410 回答