在 JS 中,为什么字符串是可枚举的而数字不是,存储这两者使用的数据结构有区别吗?

2019-01-08 11:09:57 +08:00
 kaitoSim

如题。

2402 次点击
所在节点    JavaScript
3 条回复
TomVista
2019-01-08 12:43:20 +08:00
js 中变量类型都是对象的延申,对象枚举需要访问对象的(忘了)某个属性,确定对象是否接受枚举.

有错误请指正,我 js 高程才看了几十页,溜了溜了.
pkoukk
2019-01-08 14:04:48 +08:00
js 中对象是否可枚举是由其 enumerable 属性所标识的。

对于 string,ECMA 的定义是:
The type String is the set of all finite ordered sequences of zero or more Unicode characters。
string 类型是一串有限有序,长度可以为 0 的 Unicode 字符

在设计之初,string 就是被视作一个有序的字符序列来进行设计的,所以它的本质是
It is a set of "elements" of 16-bit unsigned integer values. Each element in the String occupies a position in the String.
它是一系列由 16 位无符号整型数组成的元素。每一个元素在这个 String 里占一个位置

而 number 就是一个普通的双精度浮点数( double-precision 64-bit binary format IEEE 754 value )
yxcoder
2019-01-08 15:03:05 +08:00
就像 C 里面 字符串就是字符数组一样

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/524904

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX