声明为同一变量时,toFixed不是函数

时间:2017-11-03 14:33:45

标签: jquery

我在视图中显示价格。每个项目的价格设置如下:

var price = item.price * item.vat

现在,如果满足某个条件,我想在价格上使用toFixed(2),以显示最多两位小数。我正在尝试为案例写一个if条件:

if (conditionIsMet) {
    price = price.toFixed(2);
}

但是Chrome devtools告诉我Uncaught TypeError: price.toFixed is not a function,这非常奇怪,因为我尝试过这样的事情:

if (conditionIsMet) {
    var price2 = price.toFixed(2);
}

哪个有效。我怀疑是toFixed()返回一个字符串,这是我尝试使用parseFloat解决的一个问题,但无济于事。我哪里错了?

3 个答案:

答案 0 :(得分:0)

尝试将价格首先浮动parseFloat(price)。如果您的价格是字符串,它将无法使用。

答案 1 :(得分:0)

toFixed method returns a string

(function() {
  let price = parseFloat('10.452');
  document.write(typeof price + ' - ' + price.toFixed(2) + '<br />');
})();

(function() {
  let price = '10.452';

  document.write(typeof price + ' - ');
  document.write(price.toFixed(2));
})();

如您所见,第一种方法有效,因为我正在解析浮动。

第二种方法,因为它是一个字符串,它没有必要的方法,抛出错误。

模拟你的例子:

var item = {
  price: 8.99,
  vat: 1.23
};

var price = item.price * item.vat;

if (true) {
  price = price.toFixed(2);
}

您的示例不会引发任何错误。

答案 2 :(得分:0)

price = Number(price).toFixed(2);