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。这就是问题的根源。谢谢你的帮助!我们能不能得到一个被接受的答案,一个有权限的人。