为什么在将Javascript对象推送到数组之前必须将其存储在变量中?

路易丝

我正在使用此递归函数在Javascript中生成树,该树有效:

function generate(depth){
        console.log('call '+depth);
        created_children = [];
        if (depth < 3) {
          for (i=0; i<3; i++){
            new_child = generate(depth+1);
            created_children.push(new_child);
          }
          console.log(created_children);
          return {text: 'lorem', children: created_children};
        }
        else
          return {text: 'lorem'};
      }

但是,当我将我的子节点附加到created_children这样的地方时,它created_children为空。

 function generate(depth){
        console.log('call '+depth);
        created_children = [];
        if (depth < 3) {
          for (i=0; i<3; i++){

            created_children.push(generate(depth+1));
          }
          console.log(created_children);
          return {text: 'lorem', children: created_children};
        }
        else
          return {text: 'lorem'};
      }

为什么Javascript会这样表现?在将变量推入数组之前,是否必须在本地范围内对其进行命名?它与惰性评估有关吗?

谢谢路易斯

丹尼尔·格鲁斯奇克(Daniel Gruszczyk)

不要在递归中使用全局变量(或在任何实际位置使用,但这只是我的观点),这是一种不好的做法。下面的代码可以正常工作:

function generate(depth){
        if (depth < 3) {
          var created_children = [];
          for (i=0; i<3; i++){
            created_children.push(generate(depth+1));
          }
          return {text: 'lorem', children: created_children};
        }
        else
          return {text: 'lorem'};
      }

var tree = generate(0);
console.log(JSON.stringify(tree));

你可以在这里检查

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Javascript

为什么函数的自变量不是JavaScript中的数组对象?

来自分类Javascript

将获取的数据推送到对象数组

来自分类Dev

为什么必须在分配变量之前将其声明为全局变量?

来自分类Dev

为什么在将值打印到地址位于指针中的内存中之前,必须将void指针强制转换为int或其他内容?

来自分类Dev

为什么List <Boolean>可以将其他对象存储在变量中(Mybatis)

来自分类Dev

Javascript:将对象从foreach推送到数组

来自分类Dev

当我尝试将对象推送到MongoDB和Nodejs中的数组时,为什么会出现castError?

来自分类Dev

Javascript-在对象中动态创建数组并将其推送到

来自分类Dev

使用Mongoose将项目推送到对象中的数组

来自分类Dev

为什么我的方法没有将结果推送到数组中?

来自分类Dev

在JavaScript中将对象推送到数组

来自分类Dev

将js对象推送到数组

来自分类Dev

为什么javascript将这些变量作为php中的对象?

来自分类Dev

将项目推送到嵌套对象数组

来自分类Dev

为什么更新Gitlab后无法将更改推送到存储库中?

来自分类Dev

为什么我必须将perl输出传送到新的perl命令中

来自分类Dev

为什么在获取元素之前必须将PHP数组加载到变量中?

来自分类Dev

在将JSON对象推送到Javascript之前过滤数组

来自分类Dev

将项目推送到数组中并以javascript返回

来自分类Dev

为什么此fs.readFile循环未将其结果推送到我的数组?

来自分类Dev

为什么必须将代码放入“ runonuithread”方法中?

来自分类Dev

为什么当我们调用“任务”变量时,必须将其写为“ task()”

来自分类Dev

JavaScript-通过类似的属性查找对象并将其推送到新数组中

来自分类Dev

为什么必须将view属性分配给变量?

来自分类Dev

Javascript:将数据推送到for循环内的数组对象

来自分类Dev

Meter 将新对象推送到集合中的数组

来自分类Dev

如何导航 JSON 文件,获取所需的对象并使用 javascript 将其推送到数组中?

来自分类Dev

使用 jQuery(或 Javascript)将对象列表推送到数组中

来自分类Dev

JavaScript:将每个 querySelectorAll 结果推送到变量中

Related 相关文章

  1. 1

    为什么函数的自变量不是JavaScript中的数组对象?

  2. 2

    将获取的数据推送到对象数组

  3. 3

    为什么必须在分配变量之前将其声明为全局变量?

  4. 4

    为什么在将值打印到地址位于指针中的内存中之前,必须将void指针强制转换为int或其他内容?

  5. 5

    为什么List <Boolean>可以将其他对象存储在变量中(Mybatis)

  6. 6

    Javascript:将对象从foreach推送到数组

  7. 7

    当我尝试将对象推送到MongoDB和Nodejs中的数组时,为什么会出现castError?

  8. 8

    Javascript-在对象中动态创建数组并将其推送到

  9. 9

    使用Mongoose将项目推送到对象中的数组

  10. 10

    为什么我的方法没有将结果推送到数组中?

  11. 11

    在JavaScript中将对象推送到数组

  12. 12

    将js对象推送到数组

  13. 13

    为什么javascript将这些变量作为php中的对象?

  14. 14

    将项目推送到嵌套对象数组

  15. 15

    为什么更新Gitlab后无法将更改推送到存储库中?

  16. 16

    为什么我必须将perl输出传送到新的perl命令中

  17. 17

    为什么在获取元素之前必须将PHP数组加载到变量中?

  18. 18

    在将JSON对象推送到Javascript之前过滤数组

  19. 19

    将项目推送到数组中并以javascript返回

  20. 20

    为什么此fs.readFile循环未将其结果推送到我的数组?

  21. 21

    为什么必须将代码放入“ runonuithread”方法中?

  22. 22

    为什么当我们调用“任务”变量时,必须将其写为“ task()”

  23. 23

    JavaScript-通过类似的属性查找对象并将其推送到新数组中

  24. 24

    为什么必须将view属性分配给变量?

  25. 25

    Javascript:将数据推送到for循环内的数组对象

  26. 26

    Meter 将新对象推送到集合中的数组

  27. 27

    如何导航 JSON 文件,获取所需的对象并使用 javascript 将其推送到数组中?

  28. 28

    使用 jQuery(或 Javascript)将对象列表推送到数组中

  29. 29

    JavaScript:将每个 querySelectorAll 结果推送到变量中

热门标签

归档