Javascript toFixed不是一个函数

Javascript toFixed is not a function

本文关键字:一个 函数 toFixed Javascript      更新时间:2023-09-26

问题如下:

我定义的

:

var total = 0;
function add(a){
  total+=a;
  var float_num = total.toFixed(2);
  return float_num;
}

JS给我一个错误说Uncaught TypeError total。toFixed不是一个函数

我不明白。我声明的total不是一个数字类型吗?

我认为防止错误发生的最简单方法是始终将参数解析为number:

var total = 0;
function add(a){
  total+=a;
  var float_num = Number(total).toFixed(2);
  return float_num;
}

检查上面的代码是否重新定义了Number原型上的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恰好是"string",那么你要做的是:

"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是浮点数而不是字符串。

https://jsfiddle.net/6to7kbbm/

这将抛出异常:

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()将失败。

所以问题不在于函数,而在于你如何调用它。在你的问题中,你没有显示你是如何调用函数的,所以我不能给你任何直接的指导,除了确保你每次都给它一个数字。

也许你在传递一个字符串?这将破坏一些东西(即使字符串确实包含一个数值)。

或者它可能是nullundefinedNaN由于错误或疏忽在您的系统的其他地方?我不知道,但在这些情况下,您可能根本不想调用add()函数。

我找到问题了。我的其他一些函数有一个代码xxx.text(total)。它实际上把total转换回string。

谢谢你的帮助!

验证是否有任何声明的函数与您正在使用的变量同名。为了防止这种情况,你可以声明全局变量,如:

var global_variable = 0;
function myfunction()
{
    var variable = 0; 
    global_variable = variable + 1;
}