Javascript toFixed不是一个函数

时间:2015-08-11 10:29:52

标签: javascript

嗨问题是:

我定义:

var total = 0;

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

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

我不明白。我声明的总数不是数字类型?

7 个答案:

答案 0 :(得分:0)

检查上面的任何代码是否重新定义了Number原型上的toFixed,例如

Number.prototype.toFixed = {};

var total = 0;

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

add(2)

是复制错误的一种方法。

答案 1 :(得分:0)

取决于a的值。如果a恰好是"string",那么您正尝试这样做:

"0string".toFixed(2)

应该抛出错误。

答案 2 :(得分:0)

这有效:

var total = 1.0;

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

console.log(add(4.89));

这段代码有点不安全,因为你假设a是float而不是字符串。

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"));

答案 3 :(得分:0)

好的,所以我只运行了几次代码,并确认您的.toFixed()行正常运行。

但是,它仅在您将数值传递给函数时才有效。如果a参数不是数字,则toFixed()将失败,如上所述。

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

也许你传了一个字符串?这会破坏事情(即使字符串确实包含数值)。

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

答案 4 :(得分:0)

我发现了问题。我的其他函数有一个xxx.text(total)的代码。它实际上将总数转换回字符串。这导致了问题。

感谢您的帮助!

答案 5 :(得分:0)

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

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

答案 6 :(得分:0)

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

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