猿问

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)
  : () => {}


BIG阳
浏览 599回答 1
1回答

梦里花落0921

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

相关分类

JavaScript
我要回答