数値がプリミティブ型の場合、なぜ私ができるのか:
> (12345).toString()
"12345"
括弧はプリミティブ型を に変換していNumber
ますか?
いいえ、括弧はパーサーに が.
小数点ではないことを理解させているだけです。
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 はプリミティブとオブジェクトの間を容易に強制するからです。この場合、プロパティの長さにアクセスするために、文字列値が文字列オブジェクトに強制されます。文字列オブジェクトはほんの一瞬しか使用されず、その後、ガベージ コレクションの神々に犠牲にされます – しかし、テレビのディスカバリー ショーの精神で、とらえどころのない生き物をトラップし、さらなる分析のために保存します…</p>