Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
简单Javascript并不是我想要的那样工作_Javascript - Fatal编程技术网

简单Javascript并不是我想要的那样工作

简单Javascript并不是我想要的那样工作,javascript,Javascript,我想迭代数组,但是,在打印出数组中的所有值之后,它会打印一个未定义的值,我想知道为什么会发生这种情况,以及如何修复它。谢谢 var utilities = { printAllMembers:function(targetObject){ for(i in targetObject){ document.write("<br>"+targetObject[i]); } } } var batman=[];

我想迭代数组,但是,在打印出数组中的所有值之后,它会打印一个未定义的值,我想知道为什么会发生这种情况,以及如何修复它。谢谢

var utilities = {
    printAllMembers:function(targetObject){
        for(i in targetObject){
            document.write("<br>"+targetObject[i]);
        }
    }
}
var batman=[];
    batman[0]="batman";
    batman[1]="batman@bat.man";
    batman[2]="male";

document.write(utilities.printAllMembers(batman));
var实用程序={
printAllMembers:函数(targetObject){
对于(目标对象中的i){
文件。写入(“
”+目标对象[i]); } } } var蝙蝠侠=[]; 蝙蝠侠[0]=“蝙蝠侠”; 蝙蝠侠[1]=”batman@bat.man"; 蝙蝠侠[2]=“男性”; document.write(实用程序.printalmembers(蝙蝠侠));
它打印了一个未定义的,我想知道为什么会发生这种情况

因为你已经告诉它在这里:

   document.write(utilities.printAllMembers(batman));
// ^
它将调用
实用程序。printalmembers
,然后输出调用函数的结果。由于该函数不返回值,因此调用该函数的结果是
未定义

…以及我如何修复它

只要叫它,只要叫它:

utilities.printAllMembers(batman);

旁注:不要使用
for in
(没有保护措施)循环遍历数组索引,这不是它的用途。有一个完整的讨论和各种选择,你有循环通过数组



旁注2:您的代码受到攻击,因为您从未声明
i
。请记住使用
var
(通过ES5)或
let
(ES6+,截至2015年8月尚未在野外得到很好的支持)声明变量。

问题在于使用
document.write()
两次-在
printalmembers()
函数中以及调用该函数时。如上所述,
for in
循环的格式不正确且使用不当-请使用常规的
for循环
while循环
,如下所示

var utilities = {
    printAllMembers:function(targetObject){
        var i = 0;
        while(i < targetObject.length){
            document.write("<br>"+targetObject[i]);
            i += 1;
        }
    }
};
var batman=[];
    batman[0]="batman";
    batman[1]="batman@bat.man";
    batman[2]="male";

utilities.printAllMembers(batman);
var实用程序={
printAllMembers:函数(targetObject){
var i=0;
while(i”+目标对象[i]);
i+=1;
}
}
};
var蝙蝠侠=[];
蝙蝠侠[0]=“蝙蝠侠”;
蝙蝠侠[1]=”batman@bat.man";
蝙蝠侠[2]=“男性”;
实用程序。打印所有成员(蝙蝠侠);
有关循环和迭代的更多信息,请参阅