带有变量的控制台日志,但不显示数组列表

时间:2018-12-29 01:40:51

标签: javascript

我只是用控制台定义的变量temp来记录阵列列表,如下所示。但是输出仅显示数组中的第三个元素。不列出每个元素的原因是什么? 因为当我简单地控制台日志arr [i]时,它显示了数组中的所有3个元素,但没有显示可变的温度。

这是我的代码

function largestFour(arr){
 var max = [];
 for ( var i = 0; i < arr.length; i++)
 var temp = arr[i];
 console.log(temp);

}
largestFour([[4,5,1,3],[13,27,16,5],[10,19,4,9]]);


output 
(4)[10,19,4,9]

5 个答案:

答案 0 :(得分:2)

必须定义{}块,以便for知道它是块执行的开始和结束。

function largestFour(arr) {
  var max = [];
  for (var i = 0; i < arr.length; i++) {
    var temp = arr[i];
    console.log(temp);
  }
}

largestFour([
  [4, 5, 1, 3],
  [13, 27, 16, 5],
  [10, 19, 4, 9]
]);

已编辑

代码中实际发生的事情

function largestFour(arr){
 var max = [];
 for ( var i = 0; i < arr.length; i++)
   var temp = arr[i];
 console.log(temp);

}

for循环,当您定义大括号{}或执行块时,他只是运行(且仅) for循环下面的下一行。

答案 1 :(得分:0)

您错过了{}

代码如下:

function largestFour(arr){
 var max = [];
 for ( var i = 0; i < arr.length; i++){
  var temp = arr[i];
  console.log(temp);
 }
}

答案 2 :(得分:0)

我试图重构您的代码,并且可以正常工作

function largestFour(arr){
  for (var i = 0; i < arr.length; i++) {
    var temp = arr[i];
    console.log(temp);
  }
}
largestFour([[4,5,1,3], [13,27,16,5], [10,19,4,9]])

答案 3 :(得分:0)

for ( var i = 0; i < arr.length; i++)等效于for ( var i = 0; i < arr.length; i++);for ( var i = 0; i < arr.length; i++){}

还使用var i声明for循环初始化程序,使它们具有与循环本身相同的作用域,即函数largetstFour()

因此,可以使用括号{}let代替var进行for循环初始化声明。

function largestFour(arr){
  var max = [];
  for ( let i = 0; i < arr.length; i++)
  {
    var temp = arr[i];
    console.log(temp);
  }
}

答案 4 :(得分:0)

原因是您不知道 if 语句的上下文。 if 语句仅包装不带花括号{的子句。因此,您的代码console.log仅执行了一次。

```

const largestFour = (arr) => {
    arr.forEach(item => console.log(item))
}

largestFour([[4, 5, 1, 3], [13, 27, 16, 5], [10, 19, 4, 9]])

```