在OSX 上的Firefox 45 中,当我从一个不存在的密钥从localStorage
获取项目时,函数调用返回null
。我在控制台中对此进行了测试。
如果我改为将调用结果分配给变量,并在控制台中打印其值,我会得到"null"
,即字符串。
为什么先前未定义的变量的变量赋值将调用结果转换为String?
使用过的代码(在控制台中):
localStorage.getItem("non-existing-key"); // returns null
var x = localStorage.getItem("non-existing-key");
x // returns "null"
编辑:两个版本似乎在OSX上的Chrome 50.0.2661.86上都正常运行(都返回null
)
Edit2:我的错误。我在测试中使用了另一个变量名(具体来说:var name
)。现在,如果我让控制台返回变量name
的值,它将返回window.name
,这是String类型的window
的属性,默认为"null"
。因此,它不是导致转换的赋值,而是我得到了由window
定义的String属性。
答案 0 :(得分:0)
var name = localStorage.getItem("non-existing-key");
name
现在,getItem
确实返回null
而不是字符串。接下来发生的事情是,通过让控制台打印name
的值,它实际上得到window.name
(参见window.name on MDN),默认情况下为"null"
(一个字符串)