gpt4 book ai didi

Javascript之谜: variables in functions

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:26:22 24 4
gpt4 key购买 nike

好吧,我被难住了,主要是我对javascript的使用还不够。我知道这是一个数组指针问题(我必须在函数中复制数组......),但不确定如何解决它。麻烦你解释一下为什么我的 Javascript 版本不行而 Python 版本可以?它应该反转数组(我知道有一个内置数组),但我的问题是:Javascript 中的数组与 Python 中的数组处理方式有何不同?

Javascript (does not work): 

function reverseit(x) {

if (x.length == 0) { return ""};
found = x.pop();
found2 = reverseit(x);
return found + " " + found2 ;

};

var out = reverseit(["the", "big", "dog"]);

// out == "the the the"

==========================

Python (works):

def reverseit(x):
if x == []:
return ""
found = x.pop()
found2 = reverseit(x)
return found + " " + found2

out = reverseit(["the", "big", "dog"]);

// out == "dog big the"

最佳答案

应该是……

  var found = x.pop();
var found2 = reverseit(x);

如果不对这些变量进行本地化,您会将它们声明为全局变量 - 并在每次调用 reverseit 时重写它们的值。顺便说一句,如果开发者的浏览器支持(我认为应该支持),则可以使用 'use strict'; 指令 ( MDN ) 来防止这些错误。

显然该代码在 Python 中有效,因为 foundfound2 是本地的。

但看看 JS 生活的光明面:您可以像这样编写该函数:

function reverseit(x) {
return x.length
? x.pop() + " " + reverseit(x)
: "";
};
console.log(reverseit(['the', 'big', 'dog']));

...根本没有声明任何局部变量。

关于Javascript之谜: variables in functions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13224148/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com