gpt4 book ai didi

Javascript - 尝试将函数分配给变量

转载 作者:行者123 更新时间:2023-11-30 15:26:07 26 4
gpt4 key购买 nike

我只是用 javascript 编写了一个非常简单的函数来计算阶乘。我知道在 javascript 中您可以将函数分配给变量。

所以我已经在在线编译器 (https://repl.it/languages/javascript) 上试过了,这就是我的代码的样子

var mynum = prompt("Enter a number", "<enter a number>");
var answer;
if (isNaN(mynum)){
console.log(mynum +" is not a number");
}
else{
console.log("You entered "+mynum);
answer = function (mynum){
var i = mynum-1;
var temp = mynum;
while(i>0){
temp = temp*i;
i--;
}
return temp;
};
console.log("the factorial of "+mynum+" is "+answer);
}

但是当我运行它时,输出始终将整个函数包含为“answer”

You entered 23
the factorial of 23 is function (mynum) {var _loopStart = Date.now(),_loopIt = 0;
var i = mynum - 1;
var temp = mynum;setTimeout(function () {_loopStart = Infinity;});
while (i > 0) {if (++_loopIt > 5000 && Date.now() - _loopStart > 150) throw new RangeError("Potential infinite loop. You can disable this from settings.");
temp = temp * i;
i--;
}
return temp;

但是,当我创建函数然后单独调用它时,我没有遇到这个问题(类似于 answer = function(mynum)。

谁能告诉我为什么会这样?

谢谢!

最佳答案

将函数分配给变量不同于分配其评估。

在您的情况下,您有两种可用的解决方案:

在记录时间对分配给您的函数进行有效调用:

console.log("the factorial of "+mynum+" is "+answer(mynum));

在分配时间对分配给您的函数进行有效调用:

answer = (function (mynum){
var i = mynum-1;
var temp = mynum;
while(i > 0) {
temp = temp*i;
i--;
}
return temp;
}(mynum));

对于您的具体情况,这两种解决方案都是相当的。

为什么?

因为这样声明一个函数:

var func = function () {
console.log("Hello!");
};

或者像这样:

function func () {
console.log("Hello!");
};

little difference

关于Javascript - 尝试将函数分配给变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42939650/

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