【问题标题】:Javascript Method Chaining: Correct method chain toFixed() and parseFloat() to return a number, not a string?Javascript 方法链:正确的方法链 toFixed() 和 parseFloat() 返回一个数字,而不是一个字符串?
【发布时间】:2013-06-19 18:46:20
【问题描述】:

这里最重要的是我不能设置变量,需要即时运行:

处理纬度。让我们称之为纬度。假设在这种情况下 lat 是 123.4567

lat.toFixed(2).parseFloat();

TypeError: Object 123.35 has no method 'parseFloat'

解决这个问题的最佳方法是什么?

【问题讨论】:

  • 嗯,你需要传递一些东西给parseFloat,这是一个函数而不是一个方法,所以...parseFloat(lat.toFixed(2));。如果你想能够使用链接,你可以修改String的原型,比如:String.prototype.parseFloat = function () { return parseFloat(this); }; - jsfiddle.net/L4M2C
  • 是的,你是对的,我只是完全忽略了它。 parseFloat(Lat).toFixed(2)

标签: javascript parsefloat tofixed


【解决方案1】:

toFixedNumber 的一个方法,返回一个字符串。 window.parseFloat 是一个全局函数,而不是String 的方法,但如果你真的必须,那么你可以把它变成一个String 方法,否则就将它作为一个函数使用。在这种情况下,您甚至可以使用 unary plus 运算符。

(关于增强原生对象的讨论很多,我不打算讨论,您可以做一些研究并自己决定。)

Javascript

if (!String.prototype.parseFloat) {
    String.prototype.parseFloat = function () {
        return parseFloat(this);
    }
}

var lat = 123.456789;

console.log(parseFloat(lat.toFixed(2)));
console.log(lat.toFixed(2).parseFloat());
console.log(+lat.toFixed(2));

输出

123.46
123.46 
123.46 

开启jsfiddle

【讨论】:

  • 更改String 原型并没有那么大的争议。现在,ArrayObject 是另一回事了……
  • 我同意,但这取决于你的旅行圈子。
  • 没错,我只是从未听说过任何反对它的具体内容。但重要的是检查该方法是否不存在。喜欢"".parseFloat || String.prototype.parseFloat = function () { /* Stuff */ };
  • 当然,在这个简单的情况下,我认为没有必要,但为了完整起见,我会添加它。
  • 我希望我刚刚所做的编辑没问题;随时恢复或任何东西:)
猜你喜欢
  • 1970-01-01
  • 2011-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多