私が理解していることからstring
、JavaScript の (基本) 型はプリミティブ型です。つまり、その変数はスタックに割り当てられます。
スタック上で型を割り当て可能にするには、固定サイズが必要であると考えていましboolean
たnumber
.
それを仮定するのはどういうわけか間違っていますか、string
それとも JavaScript プリミティブ型で s を作成するために使用される他の内部マジックですか?
編集: JavaScript が緩やかに型付けされていると考えると、これはより複雑になります。関数の過程でローカル変数に割り当てられる可能性のあるもののサイズが固定されていないことを考えると、どのようにローカル変数をスタックに割り当てることができるのか疑問に思います。
しかし、これに対する(おそらく単純化された)答えは、すべてのローカル変数にスタック上の固定最大サイズを割り当てることができるということかもしれません。これがnumber
型のサイズであると私が考える8バイトであり、他のすべてのプリミティブ型を収容するのに十分な大きさである必要があります(string
) とメモリ アドレス (ローカル変数に参照型が割り当てられている場合)。ただし、文字列を 8 バイト (または任意のサイズ) に制限することはできません。これにより、文字列 (プリミティブ型のものであっても) はスタックに割り当てられない (できない) と結論付けられます。したがって、JavaScript の「プリミティブ型」という用語は、スタックに必ず割り当てられる型ではなく、「基本/ビルディング ブロック」型を意味するために使用されます (本「Professional JavaScript.. .」 ニコラス・ザカス著)。
これについて話している良い情報源への他の見方やポインタを持っている人はいますか?