我找不到这方面的任何信息,但假设我有
var arr = [1, 2, 3];
var x = arr[1.5];
我假设 Javascript 将 floor
索引并返回索引 1 处的项目,但似乎至少在 Chrome 中它只返回 undefined
。
这是正确的吗?我找不到任何标准或文档来证实这一点。如果是这样,实际上真的很不方便,因为我假设向下舍入行为允许您将 [0, n) 范围内的任何 float 传递给数组索引,但如果您进行 float 学运算,似乎您会默默地破坏数组不是圆形的。
编辑:如果有人维护一份 javascript 陷阱列表,请添加此列表。现在我必须检查 10k 行 javascript 代码,看看我所做的这个假设在什么地方悄悄地导致了错误!
最佳答案
根据 MDN: Array ,数组项实际上是属性,属性由字符串标识。
因此,访问 arr[1.5]
与访问 arr['1.5']
是一样的,而 Firefox 实际上就是这样做的。
这段代码:
var x = [0,1,2,3,4,5];
x[1.5] = 42;
alert(x);
alert(x['1.5']);
alert(x['1.50']);
输出:
0, 1, 2, 3, 4, 5
42
undefined
因此,使用浮点值访问的项目是由数字的字符串表示形式标识的属性。请注意,使用 '1.50'
访问项目与使用 '1.5'
访问项目不同,因此索引不会转换为数字。
我也在 Internet Explorer 和 Chrome 中对此进行了测试,它们都与 Firefox 一样。
关于javascript - 如何解释 float 组索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6649283/