JavaScript 括号将基元类型转换为对象

JavaScript parentheses converts primitive type to object

本文关键字:类型转换 对象 JavaScript      更新时间:2023-09-26

如果数字是基元类型,为什么我可以这样做:

> (12345).toString()
"12345"

括号是否将基元类型转换为Number

不,括号只是让解析器理解.不是小数点。

12345 .toString()也会起作用。

每当访问基元数字的属性时,基元数字都会隐式转换为 Numbers,但这些对象是临时的,会立即丢失。例如:

var foo = 5;
foo.bar = "something";
console.log(foo.bar); // undefined

字符串和布尔值也是如此。

实际上,1 .toString()也可以。

>>> typeof(Number(1)) === typeof(1)
true
>>> var a=1; a.toString()
"1"

它是解析器:1.x 期望 x 是一个数字。

>>> 1.toString()
SyntaxError: identifier starts immediately after numeric literal
[Break On This Error]   

您可以在此处找到进一步的解释

如果基元没有属性,为什么"abc".length返回一个 价值?

因为 JavaScript 很容易在原语和对象之间强制。在这种情况下,字符串值被强制到字符串对象 为了访问属性长度。仅使用字符串对象 在几分之一秒之后,它被献祭给众神 垃圾收集 - 但本着电视发现节目的精神,我们 将困住这个难以捉摸的生物并保存它以供进一步分析......