Javascript vs python:具有两个递归分支的函数的不同输出 - javascript

我一直在将python代码毫无问题地翻译成javascript,但对于以下示例,我却没有这样做,也不知道是什么原因。尽管有相似的代码,但是javascript代码似乎产生了与python完全不同的输出。我已经研究了这个问题,并且似乎javascript无法执行第二个递归分支?谁知道我该如何使javascript代码输出与python相似的代码?谢谢

1- Python代码:

def createNode(_id, right, left):
    return {'id': _id, 'left': left, 'right': right}

n1 = createNode(1, None, None)
n2 = createNode(2, None, None)
n3 = createNode(3, None, None)
n4 = createNode(4, None, None)
n5 = createNode(1, n1, n2)
n6 = createNode(2, n3, n4)
n7 = createNode(3, n5, n6)

def DownTree(lst, node): 
    left = node['left']
    right = node['right'] 

    if(right == None):
        lst.append(node['id'])
    else:
        DownTree(lst, right)    
    if(left == None):
        lst.append(node['id'])
    else:
        print('will excute')
        DownTree(lst, left)


lst = []
DownTree(lst, n7)

print(lst)
## outputs: [1, 1, 2, 2, 3, 3, 4, 4]

2- Javascript代码:

function createNode(_id, right, left){
    return {'id': _id, 'left': left, 'right': right}
}
n1 = createNode(1, undefined, undefined)
n2 = createNode(2, undefined, undefined)
n3 = createNode(3, undefined, undefined)
n4 = createNode(4, undefined, undefined)
n5 = createNode(1, n1, n2)
n6 = createNode(2, n3, n4)
n7 = createNode(3, n5, n6)

function DownTree(lst, node){ 
  left = node['left']
  right = node['right'] 

  if(right == undefined){
    lst.push(node['id'])
  }
  else{
    DownTree(lst, right)
  }  
  if(left == undefined){
    lst.push(node['id'])
  }
  else{
    console.log('not executed!')
    DownTree(lst, left)
  }
} 

lst = []
DownTree(lst, n7)
console.log(lst)
// outputs: [1, 1, 1, 3]

参考方案

在您的JS中,leftright的作用域不正确。您需要将varlet添加到它们的定义中,以便它们不是全局的

var left = node['left']
var right = node['right'] 

Javascript + Python:将数组发送到Python脚本,将结果返回给Javascript - javascript

我想建立一个网页,该网页通过Javascript API进行许多Facebook状态更新,并将它们分类到一个数组中。然后,我想将此数组发送到Python脚本,该脚本可以专门使用NLTK.进行语言分析。在Python中获得合适的结果后,我想将结果从该脚本返回到Javascript,以显示给用户等。听起来可能吗? javascript大神给出的解决方案 是的,完…

如何根据手势滚动网页 - javascript

如何使用pyhton / javascript使用手势向上/向下或向左/向右滚动页面。我尝试了很多找到解决方案,但无法解决。 参考方案 Javascript手势插件(JSHG)是一个很棒的插件,它使您可以通过现有网站或Web应用程序中的网络摄像头来支持用户的手势识别。您无需具有计算机视觉的任何背景即可使用此插件。当前,它提供了一组基本的手势,其中包括手的位置…

将第三方网站的POST表单数据发送到Django - javascript

我正在托管一个Django网站,该网站存储有关用户的信息。但是,我想在第三方网站上托管表格,例如订阅电子报。我希望能够从URL中的查询集中获取信息并将其发布回我的Django网站。我有一个小脚本,可抓取queryset信息并将其放入表单上的隐藏字段中,然后发布该数据。但是,目前这是在我的网站上完成的。如果我要在其他人的网站上托管该表格,那么最好的处理方式是什…

使用Javascript和Django模板动态加载HTML图像 - javascript

我正在尝试在javascript模板中使用django加载特定的图像,但是基于django标记的格式化方式似乎遇到了问题。我在django标记中有一个标准的img静态资产来源,如下所示:{% load static %} <img src="{% static 'img/folder/logo1.svg' %}"…

JSON无法在Bottle Framework中的javascript中工作 - javascript

我现在对瓶中数据结构的使用完全感到困惑...现在,我正在使用Jquery工具ztree在我的网页中构建树。index.py:data = [{'name':'1'}, {'name':'2'}] return template('index', data) 但…