从函数参数创建一个变量

Create a variable from function parameter

本文关键字:一个 变量 函数 参数 创建      更新时间:2023-09-26

我想从这些函数参数创建新的变量。怎样才能做到呢?

function addNewStudent(firstName,lastName){
var firstName+lastName = new Student();
}
addNewStudent('Hero','Man');

错误味精:未捕获的SyntaxError: Unexpected token +

制作动态变量需要eval。这是不好的做法。有更好的选择:

使用对象:

var students={};
function addNewStudent(firstName,lastName){
  students[firstName+lastName] = new Student(firstName,lastName);
}
addNewStudent('Hero','Man');
students['HeroMan']; // Student instance
students.HeroMan; // Student instance

使用Map(仅支持ES6):

var students=new Map();
function addNewStudent(firstName,lastName){
  students.add(firstName+lastName, new Student(firstName,lastName));
}
addNewStudent('Hero','Man');
students.get('HeroMan'); // Student instance

对于对象或地图,您甚至可以通过访问students获得整个列表。这样不是更方便更明智吗?

我建议使用@dfsq上面建议的解决方案:

function Student(firstName, lastName) {
    this.firstName = firstName;
    this.lastName = lastName;
}
var student1 = new Student('Jane', 'Doe');
var student2 = new Student('John', 'Smith');
console.log(student1.firstName, student1.lastName);
console.log(student2.firstName, student2.lastName);
http://jsfiddle.net/8m7351fq/

但是如果你必须按照上面指定的方式来做:

var students = {};
function addNewStudent(firstName,lastName){
    students[firstName+lastName] = 'Some random data';
}
addNewStudent('Hero','Man');
console.log(students);
http://jsfiddle.net/em1ngm2t/1/