gpt4 book ai didi

javascript - 为什么 JavaScript 有时会将 null 转换为空字符串,有时会转换为 "null"字符串?

转载 作者:行者123 更新时间:2023-12-01 07:55:56 27 4
gpt4 key购买 nike

我正在学习 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()产生不同的值(value)?

编辑 2:

例子:
document.getElementById("demo").innerHTML = String(null); //returns an empty string 
document.getElementById("demo").innerHTML = null.toString(); //returns "null" string

最佳答案

你写了:

document.getElementById("demo").innerHTML = String(null); //returns an empty string 
document.getElementById("demo").innerHTML = null.toString(); //returns "null" string


但恐怕这两种说法都是错误的。
String(null)从不返回空字符串,而是返回 string 类型的原语其值为“空”。

顺便说一句,表格 String(null) should never be used .
new String(null)另一方面,返回一个对象, String 的实例(注意第一个大写字母),其原始值( [[PrimitiveValue]] 内部属性)为 "null" .
null.toString()在我知道的每个 JS 引擎中都会引发错误:事件虽然 null可能被认为是一个对象(由于一个历史错误),它没有属性,因此没有“方法” toString() (我引用“方法”是因为 JS 中没有方法,真的)。

无论如何,为了保持一致,你可以使用这个:
document.getElementById("demo").innerHTML = whateverVariable || '';

应该 whateverVariable是假的( nullundefined0-0''NaNfalse),空字符串 ''将分配给 document.getElementById("demo").innerHTML .

关于javascript - 为什么 JavaScript 有时会将 null 转换为空字符串,有时会转换为 "null"字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26971097/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com