lodash源码分析之toKey

112 阅读1分钟

本文为lodash源码分析的第5篇,后续会持续更新这个专题,欢迎指正。

依赖

import isSymbol from '../isSymbol.js'

源码分析

toKey函数的目的是将value转换处理成一个键名。

const INFINITY = 1 / 0

function toKey(value) {
  if (typeof value === 'string' || isSymbol(value)) {
    return value
  }
  const result = `${value}`
  return (result === '0' && (1 / value) === -INFINITY) ? '-0' : result
}

定义INFINITY作为数字常量的参考。

首先,判断value类型是否为stringSymbol,是则直接返回value。这两种类型本身可以直接作为键名。

接着,将value转换成string字符串返回。

如果是value-0,需要特殊处理。因为 数字-00转字符串得到的结果都是'0',所以这里-0需要单独判断处理。