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

JavaScript括号将基元类型转换为对象,javascript,Javascript,如果数字是基本类型,为什么我可以这样做: > (12345).toString() "12345" 括号是否将原语类型转换为数字?否,括号只是让解析器了解不是小数点 12345.toString()也可以使用 无论何时访问原始数字的属性,原始数字都会隐式转换为数字,但对象是临时的,并且会立即丢失。例如: var foo = 5; foo.bar = "something"; console.log(foo.bar); // undefined 字符串和布尔值也是如此。实际上,1.t

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

> (12345).toString()
"12345"

括号是否将原语类型转换为
数字?

否,括号只是让解析器了解
不是小数点

12345.toString()
也可以使用

无论何时访问原始数字的属性,原始数字都会隐式转换为数字,但对象是临时的,并且会立即丢失。例如:

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很容易在原语和对象之间进行强制。在这种情况下,字符串值被强制为字符串对象 以访问属性长度。仅使用字符串对象 在那之后的一小部分时间里,它被供奉给上帝 垃圾收集——但本着电视探索节目的精神,我们 将捕获难以捉摸的生物并保存它以供进一步分析


我刚才问过(为什么可以对字符串文本调用字符串方法)。答案可能会引起您的兴趣。当您尝试在原语上使用方法时,可能会重复JavaScript将原语静默地转换为具有相同值的对象,并为您调用它。这个很贵。因此,如果你想使用一个值作为一个对象,通常最好手动创建一个对象,而不是每次你调用一个原语上的方法时让JavaScript为你创建一个新对象。是的,你可以用一个小数来终止一个数字,这一直困扰着我。。。我一直不明白。