Javascript - 显示数组元素

时间:2016-12-02 23:15:53

标签: javascript

我正在尝试运行一个简单的Javascript来显示我通过拆分字符串创建的数组元素。代码如下:

<!DOCTYPE html>
<html>
<body>

<h1>JavaScript Loops</h1>

<p id="demo"></p>

<script>
  var text = "01/01/2016";
  var parts = text.split("/");
  var i;
  for (i = 0; i < parts.length; i++) {
    var x += parts[i] + "<br>";
  }
  document.getElementById("demo").innerHTML = x;
</script>

</body>
</html>

上面的代码在浏览器上没有显示任何内容,我不能在生活中找出错误的位置。有人可以建议吗?

3 个答案:

答案 0 :(得分:1)

这一行非常棘手,因此任何JavaScript编译器都会抱怨:

var x += parts[i] + "<br>";
  

未捕获的SyntaxError:意外的标记+ =

您不能使用“+ =”赋值运算符声明变量。

让我们改写这个作业:

var x = x + parts[i] + "<br>";

当它工作时,结果是一样的。仅在第一次运行时,x未定义,尚未初始化。将undefined连接到任何字符串将在结果中包含字符串 undefined

但它是否重新声明变量?不,因为一个名为hoisting的概念,任何变量声明,即使在循环内,也会被推到范围的顶部,在本例中是全局范围。 (我们不是在讨论letconst

要解决这个问题,在从这个变量中读取之前,你需要明确地指定它,即初始化。

var x = '';

稍后您将能够使用运营商+=,然后您无需使用var关键字。

答案 1 :(得分:0)

你只是在基本概念中失败了。必须在循环之前声明 var x ,如下所示:

var x = '';
for (i = 0; i < parts.length; i++) {
    x += parts[i] + "<br>";
}

答案 2 :(得分:0)

在for循环外定义x。

var text = "01/01/2016";
var parts = text.split("/");
var x = "";
for (i = 0; i < parts.length; i++) { 
    x = x + parts[i] + "<br>";
}
document.getElementById("demo").innerHTML = x;