我很好奇为什么在javascript中以下代码返回错误:
null.toString()
在其他语言中,例如ruby,它会呈现"逻辑"空字符串:
nil.to_s # ""
更新:由于我想添加的downvotes,我对此后的行为感到好奇:
typeof null == "object"
所以我认为让原型toString()"附加"它。似乎typeof null
仅因遗留原因返回object
:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/null
答案 0 :(得分:2)
null
是一个“原始值”,.toString()
是在JavaScript对象的原型中定义的。因此,这不起作用。
https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Object/toString
https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/null
答案 1 :(得分:1)
null
是原始值,因此您无法调用toString
函数。只有对象从原型提供toString。基本上,原始值没有属性。
为什么typeof null是对象?
你知道,这一切都是因为1995年5月初匆匆而来,导致了null和对象类型共享的类型标记表示泄漏。但是null意味着“没有对象”,所以它没有引起骚动,直到在Netscape 2中修复为时已晚,之后我们不愿意“修复”它并“破坏网络”。这个论点现在只适用于网络人口的程度。我们还有其他鱼类可以炒。这个已经被吞噬了。让我们不要为ES4更改typeof null并处理更重要的问题。 Reference
另一个好资源:typeof UnaryExpression
答案 2 :(得分:1)
试试这个:
const stringValue = someObject.someValue ? someObject.someValue.toString() : null;
如果 someObject.someValue
的类型为 number | null
答案 3 :(得分:0)
我们无法在ToString()
引用上调用实例方法null
。我们如何在类/对象/引用等中调用未声明的函数或属性。它只是显示错误属性toString
不存在而不是null
它取决于语言:
null.toString()
- 运行时错误null.toString()
- 不允许声明null.toString()
不允许声明(但在c#中,您可以按Convert.ToString(null);
转换,它将返回""
)答案 4 :(得分:0)
null不是一个对象或标识符。由于cd
是一个对象原型,它们彼此不兼容并会抛出错误。
答案 5 :(得分:0)
null
和undefined
以外的所有对象都可以像对象一样工作。 toString
是method
。method
是对象内部的函数。因此,由于null
的行为永远不会像object
一样,因此您无法应用任何方法。