javascript初始化函数块之外的函数的结果,fcc测试



简介

设为一个递归函数,用于推送数组中的值。我在函数块外初始化数组。数组在函数块之外初始化这一事实不应该是一个问题。d/t JavaScript函数的属性用于操作在其范围之外定义的变量。请参阅下文,将相同的代码片段分为两个版本,第一个版本的数组在通用范围内,第二个版本的函数有2个嵌套函数。结果也是粘贴的,是一样的。但是,当数组在函数块之外初始化时,此代码无法通过fcc练习中的测试。

-第一个片段:未通过测试

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 ]   

问题:

有什么区别?

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

Array.prototype.toString()

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

语法

arr.toString()

参数

无。

说明

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

编辑:

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

function steamroller(arr) {
    var newArr = [];
    while (arr.length) {
        if (Array.isArray(arr[0])) {
            newArr = newArr.concat(steamroller(arr[0]));
        } else {
            newArr.push(arr[0]);
        }
        arr.shift();
    }
    return newArr;
}
document.write('<pre>' + steamroller([1, {}, [3, [[4]]]]) + '</pre>');
document.write('<pre>' + JSON.stringify(steamroller([1, {}, [3, [[4]]]]), 0, 4) + '</pre>');

答案是,浏览器使用许多连续的值来测试程序。但是,名为"newArray"的数组在两次测试之间不会重新初始化,因为当她是全局变量时,无论何时我们启动函数,它都不会重置。很简单。

相关内容

  • 没有找到相关文章

最新更新