gpt4 book ai didi

javascript - 用于替换字符串中数字的命名函数与无名函数

转载 作者:行者123 更新时间:2023-11-29 21:14:26 25 4
gpt4 key购买 nike

我是一个 JavaScript 初学者,在我最近的编程作业中遇到的一个问题是将字符串中的所有数字替换为数字的总和,因此,例如,对于这样的输入:

"m123a"

输出应该是

"m6a"

我实际上设法编写了一个工作代码,但我不明白它为什么工作。

这是我的 HTML:

<html>
<TEXTAREA ID = "text" ROWS = 10 COLS = 30></TEXTAREA>
<br>
<INPUT TYPE = "button" ID = "button" VALUE = "Replace">
<SCRIPT src = "zaz3.js" type="text/javascript"></SCRIPT>
</html>

这是我的工作 JavaScript 代码:

function ReplaceNumbers()
{
var s = document.getElementById("text").value;
document.getElementById("text").value = s.replace(/\d+/g, function DigitSum(x)
{
var sum = 0;
while (x > 0)
{
sum += x%10;
x = x/10;
x = Math.floor(x);
}
return sum;
});
}

var button = document.getElementById( "button");

button.addEventListener("click" , ReplaceNumbers);

这是我的第一个无法运行的 JavaScript 代码版本:

function DigitSum(x)
{
var sum = 0;
while (x > 0)
{
sum += x%10;
x = x/10;
x = Math.floor(x);
}
return sum;
}

function ReplaceNumbers()
{
var s = document.getElementById("text").value;
document.getElementById("text").value = s.replace(/\d+/g, DigitSum(x));
}

var button = document.getElementById( "button");

button.addEventListener("click" , ReplaceNumbers);

这里唯一的区别是函数DigitSum在第二个版本中是单独实现的。

在调试第二个代码时,返回的错误是"ReferenceError: x is not defined". 不明白第一个代码中的参数x是偶数解释,因为它没有在代码中的其他任何地方提到。

所以,我的问题是,单独实现函数 DigitSum 与在需要的地方实现它有什么区别,第一个版本中的 x 实际是什么,而在第二个版本中又是什么?第二个版本。

最佳答案

因为在第二个函数中,您正在调用该函数,并且它返回的任何内容都被分配给替换。在你的情况下,你应该有一个错误,说“x is undefined”。

document.getElementById("text").value = s.replace(/\d+/g, DigitSum(x));

应该是

document.getElementById("text").value = s.replace(/\d+/g, DigitSum);

关于javascript - 用于替换字符串中数字的命名函数与无名函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40043337/

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