lodash.js createSet函数的疑问

新手上路,请多包涵

题目描述

在看lodash源码的时候看到createSet函数时存在这样一个判断 Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY 不太理解后半段的(1 / setToArray(new Set([,-0]))[1]) == INFINITY的意思

相关代码

const createSet = (Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) 
  ? (values) => new Set(values)
  : () => {}
阅读 1.4k
1 个回答

对于 Set 来说, -0+0 是有区别的, 但在 es2015 后规范指定 -0 和 +0 相等. 存在浏览器兼容问题. 如果是遵循标准的,则 new Set([,-0]))[1] 返回 0, 否则会返回 -0, 1 / -0 的结果为 -Infinity 不等于 Infinity, 此时使用空对象来作为标准 Set 的替代实现,

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏