Javascript 使用eval()-Uncaught SyntaxError:页面加载时出现意外标识符
首次使用stackoverflow.:) 我是一个JS初学者,尝试向变量列表中添加值,这些变量可能会根据变量的数量而变化。(即,如果numRiders=4,我需要为passenger1Name、passenger2Name、passenger3Name、passenger4Name赋值) 我正在尝试在循环中使用eval来执行此操作:Javascript 使用eval()-Uncaught SyntaxError:页面加载时出现意外标识符,javascript,dynamic-variables,Javascript,Dynamic Variables,首次使用stackoverflow.:) 我是一个JS初学者,尝试向变量列表中添加值,这些变量可能会根据变量的数量而变化。(即,如果numRiders=4,我需要为passenger1Name、passenger2Name、passenger3Name、passenger4Name赋值) 我正在尝试在循环中使用eval来执行此操作: for(i = 0; i<=numRiders; i++) { j = i+1 var l ='var ' var k = 'pass
for(i = 0; i<=numRiders; i++) {
j = i+1
var l ='var '
var k = 'passenger'
let nameJ = ride[i].passengerDetails.first + ' ' + ride[i].passengerDetails.last;
console.log (nameJ)
eval(l+k+j+ 'Name' + '= ' + nameJ + ';')
console.log(passenger1Name)
(i=0;i
nameJ
的似乎是一个字符串。因此需要在其周围加引号
eval(l+k+j+ 'Name' + '= "' + nameJ + '";')
但正如其他人在评论中所说,像这样动态定义变量几乎从来不是你真正想要的。nameJ
似乎是一个字符串。因此,你需要在它周围加上引号
eval(l+k+j+ 'Name' + '= "' + nameJ + '";')
但正如其他人在评论中所说,像这样动态定义变量几乎从来不是你真正想要的。来自@ZacAnger的选项
var names = {};
for(i = 0; i<=numRiders; i++) {
j = i+1
let nameJ = ride[i].passengerDetails.first + ' ' + ride[i].passengerDetails.last;
names['passenger'+ j+ 'Name'] = nameJ;
}
变量名称={};
对于(i=0;i来自@ZacAnger的选项
var names = {};
for(i = 0; i<=numRiders; i++) {
j = i+1
let nameJ = ride[i].passengerDetails.first + ' ' + ride[i].passengerDetails.last;
names['passenger'+ j+ 'Name'] = nameJ;
}
变量名称={};
对于(i=0;i自1996年以来,我很少看到任何评估的理由
建议这样做
const-rides=[
{乘客详情:{第一个:“弗雷德”,最后一个:“弗林斯通”},
{乘客详情:{第一个:“威尔玛”,最后一个:“弗林斯通”}
]
const names=rides.map(ride=>`${ride.passengerDetails.first}${ride.passengerDetails.last}`)
console.log(name)
我从1996年左右开始就很少看到评估的理由
建议这样做
const-rides=[
{乘客详情:{第一个:“弗雷德”,最后一个:“弗林斯通”},
{乘客详情:{第一个:“威尔玛”,最后一个:“弗林斯通”}
]
const names=rides.map(ride=>`${ride.passengerDetails.first}${ride.passengerDetails.last}`)
log(names)
为什么对变量名有如此严格的要求?为什么不使用数组或对象?const passengers={};passengers['passenger'+i]=nameJ
?@ZacAnger是的,但是,在这种情况下,即使是一个对象也看起来很奇怪。它是一组按结构化顺序排列的值。这显然是一个数组。@CharlieFish是的,你说得对,如果OP只需要乘客姓名,那么他们就需要一个数组。乘客详细信息已经在ride
数组中了。为什么要求如此严格关于变量名的要求?为什么不直接使用数组或对象?const-patients={};patients['patients'+i]=nameJ
?@ZacAnger是的,但是,在这种情况下,即使是一个对象也看起来很奇怪。它是一组按结构化顺序排列的值。这显然是一个数组。@CharlieFish是的,你说得对,如果OP只需要乘客姓名,他们需要一个数组。乘客详细信息已经在ride
数组中。Thx中有答案乡亲们。nameJ是我在上面一行中定义的变量,不是字符串。是的,你是对的,数组会让它变得更简单。但我正在尝试解决这些变量名称。它是一个包含有名字和姓氏的字符串的变量。@ramon gondim我会再次重申。这不是你想做的事情。我强烈反对trongly强烈建议您考虑其他选择。eval
存在许多安全缺陷。正如我上面所问的,为什么您需要对变量名如此严格?避免数组显然会产生比现在更多的问题。我建议您尝试回到基本面,真正关注您需要的内容ed并抛出不必要的要求(如变量命名)。@ramon gondim想一想:如果你像这样动态定义变量名,你将如何访问它们?你是否也将使用eval()
Thx代表答案。nameJ是我在上面一行中定义的变量,不是字符串。是的,你说数组会让它更简单是对的。但我正在尝试解决这些变量名称。它是一个包含有名字和姓氏的字符串的变量。@ramon gondim我会再次重申。这不是你想要的方式o正在做一些事情。我强烈建议您考虑其他选择。eval
存在许多安全缺陷。正如我上面所问的,为什么您需要对变量名如此严格?避免使用数组显然会产生比现在更多的问题。我建议尝试回到基本方法s并真正关注您需要的内容,抛弃不必要的需求(如变量命名)。@ramon gondim思考一下:如果您像这样动态定义变量名,您将如何访问它们?您是否也将在那里使用eval()
?