Closed. This question is opinion-based。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。
                        
                        5个月前关闭。
                                                                                            
                
        
我对Javascript还是很陌生,并且已经注意到在教程中,人们使用几种替代方法来处理输出。

让我们使用一个简单的示例,并说我们要console.log()每个学生姓名数组中的每个名称,每行一个名称。

方法#1:console.log()每个单独的迭代

var names = ["Alan", "Barbara", "Charlie", "Denise"]

for (var i = 0; i < names.length; i++){
   console.log(names[i]);
}


方法2:定义并使用输出变量在每次单独迭代中进行console.log()

var names = ["Alan", "Barbara", "Charlie", "Denise"]
var output = "";

for (var i = 0; i < names.length; i++){
   output = names[i];
   console.log(output);
}


方法#3:定义并使用输出变量,但是将每个带有换行符的名称存储到输出变量中,然后在整个for循环完成后将console.log()输出

var names = ["Alan", "Barbara", "Charlie", "Denise"]
var output = "";

for (var i = 0; i < names.length; i++){
   output += names[i] + "\n";
}
console.log(output);


所有这些都可以在我的浏览器中使用,但是我敢肯定我必须忽略一些细微的差异。我希望获得有关最佳做法的指导,并希望就一般或在特定情况下首选哪种方法以及避免或偏爱/致力于肌肉记忆的方法进行讨论。谢谢!

最佳答案

建议的做法是在可能的情况下避免编写自己的循环。

您不需要对数组做任何事情,因为您也可以将复杂的对象输出到控制台:

console.log(["Alan", "Barbara", "Charlie", "Denise"]);


但是,如果您需要将每个名称放在新行中,请使用Array.join,如下所示:

var names = ["Alan", "Barbara", "Charlie", "Denise"];
console.log(names.join("\n"));


如果要处理对象数组,则可以在Array.map之前调用join,以便可以将它们转换为字符串。

如果您想保持代码结构与问题中提供的结构相似,可以使用forEach

var names = ["Alan", "Barbara", "Charlie", "Denise"];
names.forEach(function(name){
    console.log(name);
});

09-20 02:20