如何在javascript中存储const值

时间:2019-11-25 07:01:56

标签: javascript typescript cypress

我正在尝试为项目创建一个随机名称并将其存储在变量中,并在其他文件中获取相同的值。我的问题是在创建项目名称时出现一个随机值say(const Name ='MyName-' + randomName),即Name ='MyName-abcd'是在获取新值时生成的,就像Name ='MyName-efgh'一样,而获取时也会生成随机值。

在我获得不同值的情况下,我尝试使用const进行存储,并且还使用了本地存储来获取getItem

我只想要一次随机名称,并在所有文件中使用相同的生成名称。

construct.js

class ConstructPage {

  // Constants.real_PROJECT_NAME + this.randomName(5)
  randomName(length) {

    var result = '';
    var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
    var charactersLength = characters.length;
    for (var i = 0; i < length; i++) {
      result += characters.charAt(Math.floor(Math.random() * charactersLength));
    }
    return result;

  }

}


export default ConstructPage;




constant.js

export const random_Name = new ConstructPage().randomName(5);
export const real_PROJECT_NAME = 'cypress-budgeting-' + random_Name;
export const fetch_project_Name = localStorage.setItem('real_api_project_name', real_PROJECT_NAME);
export const get_project_Name = localStorage.getItem('real_api_project_name');

2 个答案:

答案 0 :(得分:0)

第一次生成随机名称并将其存储在本地存储中,因此下次再次发生时,它将生成一个新名称并会在本地存储中更新,这就是您每次使用不同名称的原因。

因此,一次生成随机名称,然后将其存储在本地存储中,下一次从本地存储访问该名称,但不再生成名称。

答案 1 :(得分:0)

据我了解,您希望一次生成一个随机名称,并在调用randomName时将其返回。为此,您可以创建一个附加到randomName函数的静态变量。

randomName(length) {
    if (randomName.result) {
        return randomName.result;
    }

    randomName.result = '';
    var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
    var charactersLength = characters.length;
    for (var i = 0; i < length; i++) {
      randomName.result += characters.charAt(Math.floor(Math.random() * charactersLength));
    }
    return randomName.result;
}

由于函数是对象,因此它可以具有在两次执行之间保留的属性。如果要为不同的长度使用不同的名称,可以将属性设置为将长度映射到名称的对象,并在生成新名称之前检查映射是否存在。