无法使用 localStorage 手动生成 id

Can not get manually generate id with localStorage

我有一个 data 表单字段数据对象,其中 id 键的初始值为空字符串。我正在尝试为每个提交的表单数据生成 ID 并保存在浏览器的存储中。即,data.id = generateEmployeeId();写在下面:

function generateEmployeeId() {
    if (localStorage.getItem(KEYS.employeeId === null)) {
        localStorage.setItem(KEYS.employeeId, '0');
    }
    // eslint-disable-next-line radix
    let id = parseInt(localStorage.getItem(KEYS.employeeId));
    localStorage.setItem(KEYS.employeeId, (id += 1).toString());
    return id;
}

但不幸的是,当我执行这段代码时,我得到了 NaN

注意:这里,KEYSemployeeId键值employeeId

的对象

您的 If 语句条件错误。 你说的是 localStorage.getItem(KEYS.employeeId === null) 这相当于 localStorage.getItem(false)localStorage.getItem(KEYS.employeeId === null) 的 return 值为 nullparseInt(null)NaN。 因此,为了让您的代码正常工作,只需将 if 语句中的条件更改为 localStorage.getItem(KEYS.employeeId) === null

    function generateEmployeeId() {
    if (localStorage.getItem(KEYS.employeeId) === null)
        localStorage.setItem(KEYS.employeeId, 0);

    let id = localStorage.getItem(KEYS.employeeId);
    localStorage.setItem(KEYS.employeeId, ++id);
    return id;
    }

首先,您可能会更改第一个 if 语句,就好像您保留它一样,这就像尝试从 localStorage 中检索布尔值一样。因为 KEYS.employeeId === null 将 return 一个布尔值。

然后,如果您方便的话,您可以将 id 保存为整数,而无需 parseInt()toString().

function generateEmployeeId() {
    if (localStorage.getItem(KEYS.employeeId) === null)
        localStorage.setItem(KEYS.employeeId, 0);

    let id = localStorage.getItem(KEYS.employeeId);
    localStorage.setItem(KEYS.employeeId, ++id);
    return id;
}