sbt*_*tpr 3 javascript null local-storage
在我设置的Chrome控制台foo中null:
localStorage.setItem("foo",null)
Run Code Online (Sandbox Code Playgroud)
然后我测试,是否为null:
console.log(localStorage.getItem("foo")==null)
Run Code Online (Sandbox Code Playgroud)
打印false.
然后我测试,是否是字符串"null":
console.log(localStorage.getItem("foo")=="null")
Run Code Online (Sandbox Code Playgroud)
打印true.
我认为这null是一个合法的Javascript值."null"当我在浏览器中手动清除localStorage时,将其存储为字符串非常反直并且在其他工作程序中导致奇怪的错误.
请参阅https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage
所有值都作为字符串存储在本地存储中.您应该在存储数据之前对数据进行字符串化,并在检索数据后对其进行解析:
localStorage.setItem("foo", JSON.stringify(null));
var value = JSON.parse(localStorage.getItem("foo"));
console.log(value === null);
Run Code Online (Sandbox Code Playgroud)
        根据规范,localstorage使用存储对象接口
interface Storage {
  readonly attribute unsigned long length;
  DOMString? key(unsigned long index);
  getter DOMString? getItem(DOMString key);
  setter void setItem(DOMString key, DOMString value); //notice this line
  deleter void removeItem(DOMString key);
  void clear();
};
Run Code Online (Sandbox Code Playgroud)
setter方法转换为setItem,仅接受DOMString
根据文档
DOMString 是一个 UTF-16 字符串。由于 JavaScript 已经使用了此类字符串,因此 DOMString 直接映射到 String。
将 null 传递给接受 DOMString 的方法或参数通常会字符串化为“null”。
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           1755 次  |  
        
|   最近记录:  |