Javascript for循环的第一个值未定义

Javascript for循环的第一个值未定义,javascript,html,Javascript,Html,我正在从头制作一个JavaScript表。我试图从一个数组中打印出一系列值——这些值可能是表头,但对于这个问题,我将它们作为段落 应该有四个值,但最后会打印五个值。第一个值显示为“未定义”,但其他四个值按预期打印。代码如下: <div id="test"></div> <script> var headArray = ["Artist", "Album", "Year", "Genre"]; var tableHead = function() {

我正在从头制作一个JavaScript表。我试图从一个数组中打印出一系列值——这些值可能是表头,但对于这个问题,我将它们作为段落

应该有四个值,但最后会打印五个值。第一个值显示为“未定义”,但其他四个值按预期打印。代码如下:

<div id="test"></div>
<script>

var headArray = ["Artist", "Album", "Year", "Genre"];

var tableHead = function() {
    var str;
    for (var i = 0; i < headArray.length; i++) {
        str == "";
        str += '<p>';
        str += headArray[i];
        str += '</p>';
        console.log(str);
    }
    return str;
}

var x = document.getElementById('test');
x.innerHTML = tableHead();

    </script>

var headArray=[“艺术家”、“专辑”、“年份”、“流派”];
var tableHead=函数(){
var-str;
对于(变量i=0;i
运行HTML时,文档显示:未定义的艺术家专辑年流派

console.log显示:

"undefined<p>Artist</p>" 
"undefined<p>Artist</p><p>Album</p>" 
"undefined<p>Artist</p><p>Album</p><p>Year</p>" 
"undefined<p>Artist</p><p>Album</p><p>Year</p><p>Genre</p>"
“未定义的艺术家”
“未定义的艺术家

专辑

” “未定义的艺术家

专辑

年份

” “未定义的艺术家

专辑

年份

流派


如何防止和/或删除DOM中打印的未定义值?请记住,这只是一个更大项目的第一部分(毕竟我正在构建一个表)。

javascript需要一些值,即使是空的

 var str="";

javascript需要一些值,即使是空的

 var str="";
改变

并在循环外部初始化变量str

var str="";
改变

并在循环外部初始化变量str

var str="";

您需要在循环外声明
str
,否则它将继续被重写(以及将
=
更改为
=

var tableHead = function() {
  var str = "";
  for (var i = 0; i < headArray.length; i++) {
    str += '<p>';
    str += headArray[i];
    str += '</p>';
  }
  return str;
}
var tableHead=function(){
var str=“”;
对于(变量i=0;i

您需要在循环外声明
str
,否则它将继续被重写(以及将
=
更改为
=

var tableHead = function() {
  var str = "";
  for (var i = 0; i < headArray.length; i++) {
    str += '<p>';
    str += headArray[i];
    str += '</p>';
  }
  return str;
}
var tableHead=function(){
var str=“”;
对于(变量i=0;i
在console.log()中出现“未定义”的原因是您从未初始化过
str
。在
for
循环的第一行中,您有
str==“”
。这是将
str
的值与空字符串的比较。由于
str
未初始化,因此返回值为
未定义

您似乎正在尝试初始化变量,但这应该在for循环之外完成。如果您从
str==”
更改为
str=“”
并查看您的
运行此代码后,您将只看到上次迭代的结果。这是因为您每次都将
str
设置为一个新字符串

这就是您需要做的。使用此代码,您的console.log也将始终返回以前的迭代。否则,您的最终结果表将只有最后一个标题单元格:

var headArray = ["Artist", "Album", "Year", "Genre"];

var tableHead = function() {
    var str = '';
    for (var i = 0; i < headArray.length; i++) {
        str += '<p>';
        str += headArray[i];
        str += '</p>';
        console.log(str);
    }
    return str;
}

var x = document.getElementById('test');
x.innerHTML = tableHead();
var headArray=[“艺术家”、“专辑”、“年份”、“流派”];
var tableHead=函数(){
var-str='';
对于(变量i=0;i
在console.log()中出现“未定义”的原因是您从未初始化过
str
。在
for
循环的第一行中,您有
str==“”
。这是将
str
的值与空字符串的比较。由于
str
未初始化,因此返回值为
未定义

您似乎正在尝试初始化变量,但这应该在for循环之外完成。如果您从
str==”
更改为
str=“”
并查看您的
运行此代码后,您将只看到上次迭代的结果。这是因为您每次都将
str
设置为一个新字符串

这就是您需要做的。使用此代码,您的console.log也将始终返回以前的迭代。否则,您的最终结果表将只有最后一个标题单元格:

var headArray = ["Artist", "Album", "Year", "Genre"];

var tableHead = function() {
    var str = '';
    for (var i = 0; i < headArray.length; i++) {
        str += '<p>';
        str += headArray[i];
        str += '</p>';
        console.log(str);
    }
    return str;
}

var x = document.getElementById('test');
x.innerHTML = tableHead();
var headArray=[“艺术家”、“专辑”、“年份”、“流派”];
var tableHead=函数(){
var-str='';
对于(变量i=0;i
str==”;而不是str=“”;在loopstr==”;而不是str=“”外部初始化str;在循环外部初始化str,并将其放在
for
循环的
之前。由于
var str;
而未定义它,而不是因为一行返回
false
且未更改相关变量的代码。并将其放在
for
循环的
之前。由于
var str;
而未定义它,而不是因为一行变量返回
false
且不更改所讨论的变量的代码。我10分钟前就明白了这一点,但我没有删除此问题,因为我确信其他人会遇到此问题。感谢您的精彩回答!我10分钟前就明白了这一点,但我没有删除此问题,因为我确信有人会遇到此问题其他人会有这个问题。谢谢你的好答案!我10分钟前就知道了,但我没有删除这个问题,因为我相信其他人也会有这个问题。谢谢你的好答案!不客气。谢谢你为其他人着想!我10分钟前就知道了,但我没有删除回答这个问题是因为我相信其他人会有这个问题。谢谢你