Javascript toFixed不是一个函数
嗨,问题如下: 我定义:Javascript toFixed不是一个函数,javascript,Javascript,嗨,问题如下: 我定义: var total = 0; function add(a){ total+=a; var float_num = total.toFixed(2); return float_num; } JS给了我一个错误,说uncaughtTypeErrorTotal.toFixed不是一个函数 我不明白。我声明的总数不是数字类型?例如,检查上面的代码是否重新定义了数字原型上的toFixed Number.prototype.toFixed = {}; var
var total = 0;
function add(a){
total+=a;
var float_num = total.toFixed(2);
return float_num;
}
JS给了我一个错误,说uncaughtTypeErrorTotal.toFixed不是一个函数
我不明白。我声明的总数不是数字类型?例如,检查上面的代码是否重新定义了数字原型上的toFixed
Number.prototype.toFixed = {};
var total = 0;
function add(a) {
total += a;
var float_num = total.toFixed(2);
return float_num;
}
add(2)
是复制错误的一种方法。它取决于
a
的值。如果a
恰好是的“字符串”
,则您正在尝试执行以下操作:
"0string".toFixed(2)
这将抛出一个错误。这可以:
var total = 1.0;
function add(a) {
total += a;
var float_num = total.toFixed(2);
return float_num;
}
console.log(add(4.89));
这段代码有点不安全,因为您假设a是一个浮点而不是一个字符串
这将引发异常:
var total = 1.0;
function add(a) {
total += a;
var float_num = total.toFixed(2);
return float_num;
}
console.log(add("4.89"));
好的,我已经运行了您的代码几次,我可以确认您的
.toFixed()
行工作正常
但是,只有将数值传递到函数中时,它才起作用。如果a
参数不是数字,则toFixed()
将按照说明失败
因此问题不在于函数,而在于如何调用它。在您的问题中,您没有说明如何调用函数,因此我无法就此提供任何直接指导,只能确保每次都给它一个数字
也许你在传递一个字符串?这将破坏一切(即使字符串确实包含数字值)
或者可能是由于系统中的错误或疏忽而导致的
null
或未定义
或NaN
?我不知道,但在这种情况下,您可能根本不想调用add()
函数。我发现了问题。我的一些其他函数有一个xxx.text(总计)的代码。它实际上将total转换回string。这就是问题的根源
谢谢你的帮助 我认为防止错误发生的最简单方法是始终将参数解析为数字:
var total = 0;
function add(a){
total+=a;
var float_num = Number(total).toFixed(2);
return float_num;
}
验证是否有任何声明的函数与正在使用的变量同名。为了防止这种情况,您可以声明全局变量,如:
var global_variable = 0;
function myfunction()
{
var variable = 0;
global_variable = variable + 1;
}
确保总数是一个数字。我只是在chrome控制台中运行了你的代码,一切看起来都很好。您在哪里测试了代码?@khanmizan:Try
add(“1”)
。它会给出错误。这就是我认为正在发生的事情,如果你从网页上获取信息,那么很容易犯错误。在这方面,我认为您必须使用parseFloat(a)
我发现了问题。我的一些其他函数有一个xxx.text(总计)的代码。它实际上将total转换回string。这就是问题的根源。谢谢你的帮助!我们能不能得到一个被接受的答案,一个有权限的人。