为什么null.toString()会抛出错误

时间:2018-02-06 14:25:52

标签: javascript

我很好奇为什么在javascript中以下代码返回错误:

null.toString()

在其他语言中,例如ruby,它会呈现"逻辑"空字符串:

nil.to_s # ""

更新:由于我想添加的downvotes,我对此后的行为感到好奇:

typeof null == "object"

所以我认为让原型toString()"附加"它。似乎typeof null仅因遗留原因返回objecthttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/null

6 个答案:

答案 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

它取决于语言:

  • Javascript - null.toString() - 运行时错误
  • TypeScript - null.toString() - 不允许声明
  • C# - null.toString()不允许声明(但在c#中,您可以按Convert.ToString(null);转换,它将返回""
  • More

编辑:为什么typeof null返回“object”

Since when does null.toString() return [object Null]?

答案 4 :(得分:0)

不是一个对象或标识符。由于cd是一个对象原型,它们彼此不兼容并会抛出错误。

答案 5 :(得分:0)

  • 在JavaScript中,除了nullundefined以外的所有对象都可以像对象一样工作。
  • toStringmethod
  • method是对象内部的函数。

因此,由于null的行为永远不会像object一样,因此您无法应用任何方法。

相关问题