gpt4 book ai didi

javascript - Number 原型(prototype)扩展中的 while 循环调用函数一次,然后出现未定义的错误

转载 作者:行者123 更新时间:2023-11-29 19:24:44 24 4
gpt4 key购买 nike

我正在尝试扩展 JS Number 原型(prototype)以包含 Ruby 风格的“.times”方法(这种追求的优点是另一个问题)。

这是我的代码:

Number.prototype.times = function(doThis) {
val = +this;
while (val > 0 ) {
doThis();
val--;
}
}

如果我尝试

5..times(console.log(1));

我得到以下输出:

foo
TypeError: undefined is not a function (evaluating 'doThis()')

为什么循环在第一次迭代时有效而在第二次迭代时失败?

(注意:目标是制作 Number 原型(prototype)扩展,以便调用它时表现力强、直观,并且读起来更像自然语言,如 Ruby 的 .times 方法。)

最佳答案

您的 Number.prototype.times 函数被编写为将另一个函数作为参数(然后您使用 doThis() 调用它).

但是,当调用 times 函数时,您并没有将另一个函数作为参数传递,而是返回 console.log(1) 的值,这将最可能是 undefined(然后您尝试将其作为函数调用,导致 undefined is not a function 错误)。

相反,传递调用 console.log(1) 的函数:

5..times(function() {
console.log(1);
});

关于javascript - Number 原型(prototype)扩展中的 while 循环调用函数一次,然后出现未定义的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31235403/

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