lessfish / underscore-analysis

【NO LONGER UPDATE】underscore-1.8.3.js 源码解读 & 系列文章(完)
MIT License
3.96k stars 643 forks source link

关于javascript数组的最大索引 #7

Closed yan-jie closed 8 years ago

yan-jie commented 8 years ago

underscore源码翻译版本中,224行翻译说javascript中数组的最大长度为Math.pow(2,53)-1,但是我在控制台上测试过,出现异常 image 在ECMA262标准中,length的最大长度应该为 Math.pow(2,32)-1 参考链接

lessfish commented 8 years ago

的确,你是对的。这点我也不大理解,源码给了个链接 http://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength,你可以看下有没有用?(我是没大看明白

hankxdev commented 8 years ago

underscore 这里不是判断array,更多是对array-like(类数组?)对象的判断。因此,数组的最大长度依然是 Math.pow(2,32)-1, 而这里的 Math.pow(2,53)-1是针对其他array like对象的。另外这里的Math.pow(2,53)-1 严格来说也不是array like 对象的最大长度值,而是一个“最安全整数” (MAX_SAFE_INTEGER )https://tc39.github.io/ecma262/#sec-number.max_safe_integer

lessfish commented 8 years ago

@HangYang 棒!感谢指出 到时说到这一部分的时候再重点讲下 再次感谢!