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

时间:2016-04-25 07:59:08

标签: javascript

在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属性。

1 个答案:

答案 0 :(得分:0)

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

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

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