首页 > 试题广场 >

现有函数test返回一个数组num,如果遍历执行该数组的每一

[单选题]
此代码的运行结果为()
function test (){
  var num = []
  var i
  for (i = 0; i < 3; i++) {
      num[i] = function () {
          console.log(i)
      }
  }
  return num
}
console.log(test()) 


  • [0,1,2]
  • [3,3,3]
  • [undefined、undefined、undefined]
  • [ƒ(), ƒ(), ƒ()]
 在此之前你要明白,函数是被封装的代码,结构是静态的,只有调用函数,才能被执行。
for (var i = 0; i < 3; i++) {
console.log(i);
     }
  //上面代码会依次打印 0 1 2   执行了3次。
function test (){
  var num = []  //定义一个空数组
  var i
  for (i = 0; i < 3; i++) {
      num[i] = function () {  //这代码相当于num.push(function(){console.log(i)}),会改变原数组
          console.log(i)
      }
  }
  return num  //返回新数组
}
test()
上面代码函数function(){console.log(i)}没有被调用,此函数内部的代码不会被执行。
故答案是[ƒ(), ƒ(), ƒ()]

编辑于 2022-02-19 09:44:40 回复(1)
如果函数里面没返回值,那么会返回一个函数
发表于 2021-12-15 00:05:05 回复(2)
不是执行每一个元素吗,元素不是函数吗 黑人问号
发表于 2021-12-10 09:58:02 回复(3)
有毛病的问题,题目写了遍历执行每一个元素,答案却是只遍历不执行
发表于 2022-01-03 11:24:28 回复(1)
为啥都讲得这么复杂,本来数组存的就是函数呀,打印可不就是函数
发表于 2022-10-07 19:38:17 回复(0)
我的理解是,后面的num函数覆盖了上面的num数组,所以num是函数,而且函数没有返回值,所以打印出来是函数
发表于 2022-09-27 17:42:20 回复(0)
如果函数内没有返回值,那么就会返回函数。
发表于 2022-08-30 21:22:32 回复(0)
首先外部 console.log(test()) 调用test()函数 test()函数中,for循环里是一个赋值操作。 由于该匿名函数没有返回值,所以num[i] = f()。 PS:其实打印下来看看,会发现f()函数内容被转化为字符串出现在了打印台中
发表于 2022-04-29 07:50:22 回复(0)
我不理解,有没有详细的点的解析
发表于 2022-02-18 23:47:10 回复(1)
1
发表于 2023-04-10 18:56:39 回复(0)