Javascript比较localStorage的2个检查

时间:2011-01-16 15:54:48

标签: javascript html5 comparison local-storage

我在diveintohtml5网站上看到了这个。这是他们检查浏览器是否支持localstorage的方式。

return 'localStorage' in window && window['localStorage'] !== null;

这与刚刚做的一样吗?

return window.localStorage != undefined

4 个答案:

答案 0 :(得分:8)

<强> 1

return 'localStorage' in window && window['localStorage'] !== null;

如果window对象包含名称为localStorage的属性且该属性的值不是null,则返回true。


<强> 2

return window.localStorage != undefined

如果window对象包含名称为localStorage的属性且该属性的值不是undefinednull,则返回true (我假设全局属性undefined包含值undefined

答案 1 :(得分:5)

相同结果无论如何,因为如果window.localStorageundefined,您将获得false。如果window.localStorage为空,您将获得false,因为undefined == null

但是,我更喜欢使用!!,因为它是转换为布尔值的最快方式,如果它是false,null,undefined,',NaN或0,localStorage有用吗?

return !!window.localStorage;

修改 一个警告,它们并不完全相同,因为如果您将window.localStorage设置为undefined,则第一个会将其报告为true

答案 2 :(得分:1)

您可以使用Modernizr(1.1或更高版本)来检测对HTML5本地存储的支持。

if (Modernizr.localstorage) {
  // window.localStorage is available
} else {
  // no support for local storage
}

答案 3 :(得分:0)

我希望您推荐以下功能:

function getLocalStorage(){
   if (typeof localStorage == “object”){
      return localStorage;
   } else if (typeof globalStorage == “object”){
      return globalStorage[location.host];
   } else {
      throw new Error(“Local storage not available.”);
   }
}
  1. 首先检查是否足以确保localStorage可用
  2. 有些浏览器仍然不支持本地存储,而是支持全局存储。它具有相同的功能集,但与localStorga相比有一些差异
  3. 如果不支持任何存储,请抛出异常。
  4. 如果您想了解全局存储,请将其与本地存储进行比较,查看“适用于Web开发人员的JavaScript”,第19章。它描述了客户端本地存储,并将其与Cookie进行比较。