javascript - 旧版本的 javascript 是否将 ("-1"< 0) 评估为 false?

标签 javascript

每次有人结账时,我兄弟的电子商务网站上的一些 js 会计算和存储交易总额。定期为 tracker_total_amount 存储一个负值。在他试图找出原因的同时,他决定硬编码一个覆盖,该覆盖应该解决约 0.1% 的具有无意义值的交易。它看起来像这样:

var tracker_total_amount = parseFloat(tracker.total_amount).toFixed(2);
    if(tracker_total_amount < 0){
        tracker_total_amount = 0;
    }

系统中不断出现负值。

原创理论:

我认为他不应该使用 .toFixed,因为这会将 tracker_total_amount 转换为一个字符串——在我看来,这会停止 if < 0 条件按预期工作。在我测试它并且覆盖起作用之前,我对这个解释非常满意。看这里:http://jsfiddle.net/yXTrz/

新理论:

不同的用户正在运行不同版本的 javascript。一些非常小的子集使用旧版本的 javascript(而不是像我正在做的那样有用地将字符串转换为 float )继续将其视为字符串并始终将 tracker_total_amount 评估为 > 0,以防止覆盖触发。

问题:

旧版本的 javascript 是否以这种方式运行?某些用户是否仍在运行那些旧版本?最重要的是 - 有没有一种方法可以模拟旧版本的 javascript 来证明我的理论?

编辑:我应该指出所有重要的东西(付款等)都依赖于服务器端的计算值。此处的数字只是之后存储在 Google Analytics 中的数字,因此 - 虽然可以进行操纵 - 结果不会太糟糕。

最佳答案

您可以获得非常小的负值通过,即 -0.001,因为该值被设置为固定值。不确定您看到的是哪种底片,但任何超出固定值的底片都会让底片通过。对不起,应该更清楚,如果有进一步的计算不使用返回值而不是原始值......返回值将是-0.00 ......所以如果这只是被用作测试......

关于javascript - 旧版本的 javascript 是否将 ("-1"< 0) 评估为 false?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18693819/

相关文章:

javascript - 使用按钮在可见和隐藏之间切换

javascript - 为什么通过 AJAX 发送 POST 被 HTTP 服务器解释为 OPTIONS 而通过 CURL 发送实际上是 PUT?

javascript - Protractor 测试中日期输入的设置值

javascript - 保持对 dom 节点 : memory concerns 的引用

javascript - 链接和函数组合

javascript - 以下用户的 Firebase 最新提要

javascript - 使用 JavaScript 和 HTML 动态附加行

javascript - HTML5如何绘制透明重叠球体?

javascript - jQuery onChange() 不起作用……

javascript - JS 全局/函数作用域理解