Javascript 为什么我的代码10x的输出没有定义?

Javascript 为什么我的代码10x的输出没有定义?,javascript,Javascript,我想将10个不同的对象传递给一个函数(logObjekt),这样我就可以在所有对象中设置console.log属性名 我没有编写10行代码来实现这一点,而是使用for循环来增加传递给函数的每个名称,因为所有对象都以“objekt”开头 当我调试这个程序时,一切看起来都很好,当JS强制int为string并将两者结合起来时,我得到了“object1,object2…等等”的结果。所以乍一看,我认为我得到了一个好的解决方案,但当我实现这个解决方案时,我得到了10倍的未定义值,而不是10个来自对象的值

我想将10个不同的对象传递给一个函数(logObjekt),这样我就可以在所有对象中设置console.log属性名

我没有编写10行代码来实现这一点,而是使用for循环来增加传递给函数的每个名称,因为所有对象都以“objekt”开头

当我调试这个程序时,一切看起来都很好,当JS强制int为string并将两者结合起来时,我得到了“object1,object2…等等”的结果。所以乍一看,我认为我得到了一个好的解决方案,但当我实现这个解决方案时,我得到了10倍的未定义值,而不是10个来自对象的值

var objekt1={“name”:“value1”};
var objekt2={“name”:“value2”};
var objekt3={“name”:“value3”};
var objekt4={“name”:“value4”};
var objekt5={“name”:“value5”};
var objekt6={“name”:“value6”};
var objekt7={“name”:“value7”};
var objekt8={“name”:“value8”};
var objekt9={“name”:“value9”};
var objekt10={“name”:“value10”};
var i;
对于(i=0;i<10;i++){
logObjekt(“对象”+i);
};
函数logObjekt(objekt){
console.log(objekt.name)

};您需要创建一个对象数组并推送到该数组,以便循环遍历对象并打印出name属性

var objectlist = [];
objectlist.push({ "name": "value1"});
objectlist.push({ "name": "value2"});

for(var i = 0; i < objectlist.length; i++)
{
   logObjekt(objectlist[i]);
}
var objectlist=[];
push({“name”:“value1”});
push({“name”:“value2”});
对于(var i=0;i
要使用变量名访问全局变量,可以使用方括号语法(但在您的情况下不应该使用,请参见下面的第一个代码段)

var objekt1={
“名称”:“值1”
};
变量objekt2={
“名称”:“值2”
};
变量objekt3={
“名称”:“值3”
};
变量objekt4={
“名称”:“值4”
};
变量objekt5={
“名称”:“值5”
};
变量objekt6={
“名称”:“值6”
};
变量objekt7={
“名称”:“值7”
};
变量objekt8={
“名称”:“值8”
};
变量objekt9={
“名称”:“值9”
};
变量objekt10={
“名称”:“值10”
};
var i;
对于(i=1;i<10;i++){
logObjekt(窗口[“对象”+i]);
};
函数logObjekt(objekt){
console.log(objekt.name)

};
因为您正在将字符串值传递给
logObject
,而字符串没有
.name
属性。您真正想要的是使用一个对象数组,可以通过索引轻松访问该数组。不要使用枚举变量名。它必须是列表左侧的对象数据类型。像这样:object.property就是这个问题,我目前正在传递string.property?请参阅以获得更好的方法。当然,一旦你将其放入函数中,它就会失败。当它工作时,您真的不应该建议使用和访问全局变量。@Bergi您发表评论时,我正是在处理这一部分。在以后的帖子中,请先处理答案中最相关的部分:-)这正是我要找的,但我很高兴在这个过程中我能学到更深的东西:)谢谢大家的时间和回答。帮助我加深了对JS的理解。如果可以的话,我会把所有的评论都设为回答,因为你们都很有帮助。