0%

【学习Lodash源码】uniqueId

unqiueId([prefix=’’])

这个方法主要作用是,生成唯一ID。如果提供了prefix,会被添加到ID前缀上。

例子

1
2
3
4
5
_.uniqueId('contact_');
// => 'contact_104'

_.uniqueId();
// => '105'

这个方法源码很简单,我们直接上源码。解析直接以注释的方式呈现。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
/*
创建一个全局的对象,用来生成唯一的id。
*/
const idCounter = {}

function uniqueId(prefix='$lodash$') { //如果prefix没有传的话,默认参数为$lodash$
/*
初始化,如果prefix在idCounter中不存在的话。
*/
if (!idCounter[prefix]) {
idCounter[prefix] = 0
}

const id =++idCounter[prefix] //每次调用的时候id+1,由于是++在前,所以id是从1开始。

/*
如果没有传prefix,最终返回id,如果传了,则拼接返回。
*/
if (prefix === '$lodash$') {
return `${id}`
}

return `${prefix}${id}`
}

export default uniqueId