【发布时间】:2014-11-17 10:56:40
【问题描述】:
我正在学习 JavaScript,但我对以下内容感到困惑:
document.getElementById("demo").innerHTML = typeof (document.getElementById("demo").innerHTML);
它将“字符串”分配给 HTML 元素。好的。那么我想当我尝试分配一些不同类型的值(不是字符串)时,它将首先转换为字符串:
document.getElementById("demo").innerHTML = null; //null will be converted to string first
像这样:
document.getElementById("demo").innerHTML = String(null);
在第一个示例中,HTML 元素获得了空值。但第二个示例返回“字符串”。为什么?本教程http://www.w3schools.com/js/js_type_conversion.asp 说 String(null) 返回“null”,但不是空字符串。正如我所见,这仅适用于第二个示例。
如何理解 JavaScript 这种令人困惑的转换行为?为什么第一个示例不返回“字符串”?
已编辑:
现在我部分理解了。
JS 使用toString(),但不使用String()。并且toString() 为 null 返回空字符串。
所以现在我的问题是:为什么toString() 和String() 产生不同的值?
编辑 2:
例子:
document.getElementById("demo").innerHTML = String(null); //returns an empty string
document.getElementById("demo").innerHTML = null.toString(); //returns "null" string
【问题讨论】:
-
关于您的编辑,
ToString()也会产生"null"。 -
@Ja͢ck 但是 toString() 在 Chrome 中返回空字符串...
-
那你说的是哪个
toString()? -
我在上面的“Edited 2”中添加了示例,说明了不同的行为
-
标签: javascript string null