javascript初始化功能块外部的功能结果,FCC测试

问题描述 投票:-1回答:2

引言

让一个递归函数将值推入数组中。我从功能块中初始化数组。数组在功能块之外初始化的事实不应该成为JavaScript函数处理其作用域之外定义的变量的属性的问题。如下所示,相同的代码段分为2个版本,第一个具有一般范围的数组,第二个具有2个嵌套函数。结果也被粘贴,是一样的。但是,当在功能块外部初始化数组时,此代码未通过fcc exercise中的测试。

-第一个代码段:未通过测试。

var newArr = [];
function steamroller(arr) {

    while (arr.length > 0) {

      if (Array.isArray(arr[0])) {
       steamroller(arr[0]);   
      }  
      else {newArr.push(arr[0]);
      console.log("newArr ", newArr);
      }
      arr.shift();
    }
  // I'm a steamroller, baby
  return newArr;
}

steamroller([1, {}, [3, [[4]]]]);

及其输出:

    Native Browser JavaScript

newArr  [ 1 ]
newArr  [ 1, {} ]
newArr  [ 1, {}, 3 ]
newArr  [ 1, {}, 3, 4 ]
=> [ 1, {}, 3, 4 ]   

-第二段通过测试:

    function steamroller(arr) {//1
    var newArr = [];
function ude(arr){//2
    while (arr.length > 0) {//3
      if (Array.isArray(arr[0])) {//4
       ude(arr[0]);   
      }//4c  
      else {newArr.push(arr[0]);
      console.log("newArr ", newArr);
      }//3c
      arr.shift();
    }
  // I'm a steamroller, baby
  return newArr;
}
return ude(arr);
}
steamroller([1, {}, [3, [[4]]]]);

及其输出:

Native Browser JavaScript


newArr  [ 1 ]
newArr  [ 1, {} ]
newArr  [ 1, {}, 3 ]
newArr  [ 1, {}, 3, 4 ]
=> [ 1, {}, 3, 4 ]   

问题:

有什么区别?

javascript function global-variables
2个回答
1
投票

也许这对您有所帮助。每个对象都有一个内置的toString方法。

Array.prototype.toString()

Array.prototype.toString()方法返回一个表示指定数组及其元素的字符串。

语法

toString()

参数

无。

说明

Array对象覆盖Object的toString方法。对于Array对象,toString方法连接该数组并返回一个字符串,其中包含用逗号分隔的每个数组元素。

编辑:

如何使用本地数组收集元素的示例。

arr.toString()

0
投票

答案是该程序已由浏览器以许多连续值进行测试。但是,名为“ newArray”的数组不会在两次测试之间重新初始化,因为当我们启动函数时,当它是全局变量时,它不会重置。很简单。

© www.soinside.com 2019 - 2024. All rights reserved.