我正在学习JavaScript,以下内容让我感到困惑:
它将“字符串”分配给HTML元素。好的。所以我想当我尝试分配一些不同类型的值(而不是字符串)时,它将首先被转换为字符串:
像这样:
在第一个例子中,HTML元素的值为空。但是第二个例子返回了“string”。为什么?这个教程http://www.w3schools.com/js/js_type_conversion.asp说String(null)返回“null”,但并不是空字符串。我认为这只适用于第二个例子。
如何理解JavaScript这种令人困惑的转换行为?为什么第一个例子没有返回“string”?
编辑:现在我部分地理解了。 JS使用toString()而不是String()。对于null,toString()返回空字符串。因此,现在我的问题是:为什么toString()和String()产生不同的值?
编辑2: 例如:
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元素的值为空。但是第二个例子返回了“string”。为什么?这个教程http://www.w3schools.com/js/js_type_conversion.asp说String(null)返回“null”,但并不是空字符串。我认为这只适用于第二个例子。
如何理解JavaScript这种令人困惑的转换行为?为什么第一个例子没有返回“string”?
编辑:现在我部分地理解了。 JS使用toString()而不是String()。对于null,toString()返回空字符串。因此,现在我的问题是:为什么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͢cktoString()
方法? - Ja͢cknull.toString()
时,会出现“TypeError: null is not an object”的错误提示...因此,这很可能是一些实现细节,不能依赖它。 - Ja͢ck[1,2,3,null,5].join(" ")
-->'1 2 3 5'
- Paul