为什么 Javascript 在变量赋值时将 null 转换为字符串

Why does Javascript cast null to string at variable assignment?

本文关键字:null 转换 字符串 Javascript 变量 赋值 为什么      更新时间:2023-09-26

OSX 上的 Firefox 45 中,当我从不存在的键中从localStorage获取项目时,函数调用返回null .我在控制台中对此进行了测试。

如果我将调用结果分配给一个变量,并在控制台中打印其值,我会得到"null",即一个字符串。

为什么以前未定义的变量的变量赋值会将调用结果转换为字符串?

使用的代码(在控制台中):

localStorage.getItem("non-existing-key"); // returns null
var x = localStorage.getItem("non-existing-key");
x // returns "null"

编辑:两个版本似乎在OSX上的Chrome 50.0.2661.86上都表现正确(都返回null

编辑2:我的错误。我在测试中使用了另一个变量名称(特别是:var name)。现在,如果我让控制台返回变量 name 的值,它会返回 window.name ,这是 String 类型的 window 的属性,默认为 "null" 。所以,这不是导致强制转换的赋值,而是我得到了一个由 window 定义的 String 属性。

我犯了一个错误。我使用的具体代码如下:

var name = localStorage.getItem("non-existing-key");
name

现在,getItem确实返回null而不是字符串。然后发生的情况是,通过让控制台打印它实际上name的值,它实际上会得到window.name(参见MDN上的 window.name),默认情况下是"null"(字符串)。