javascript - 将 float 与字符串进行比较时,此代码是否有效?

标签 javascript

我正在阅读 Adob​​e 库中的代码 (snap.svg.js),我看到了这段代码,这让我很困惑:

function curveDim(p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y) {
    var a = (c2x - 2 * c1x + p1x) - (p2x - 2 * c2x + c1x),
        b = 2 * (c1x - p1x) - 2 * (c2x - c1x),
        c = p1x - c1x,
        t1 = (-b + Math.sqrt(b * b - 4 * a * c)) / 2 / a,
        t2 = (-b - Math.sqrt(b * b - 4 * a * c)) / 2 / a;
    Math.abs(t1) > "1e12" && (t1 = .5);
    Math.abs(t2) > "1e12" && (t2 = .5);

由于公式非常复杂,我无法给出测试它的值,所以我想问一个一般性问题:为什么可以将 Math.abs(t1) 与字符串 '1e12' 进行比较?这不是将 float 转换为字符串然后进行词法比较吗?如果变量 a 为零怎么办?这是好的代码吗?任何对作者想要做什么以及它是否正确的解释都会很棒。

最佳答案

否,> 运算符将两个操作数都转换为数字( http://es5.github.io/#x11.8.2http://es5.github.io/#x11.8.5 )。

看看当我将字符串转换为数字时会发生什么:

> +"1e12"
1000000000000

1e12 is actually a valid number literal表示1 * 1012。不知道为什么他们使用字符串,Math.abs(t1) > 1e12 也可以正常工作。

关于javascript - 将 float 与字符串进行比较时,此代码是否有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21640980/

相关文章:

javascript - 如何创建一个函数来呈现谷歌图表?

javascript - 计算值的变化

javascript - 类型错误 : Cannot read property 'setState' of null

javascript - 通过append()添加的jquery img会触发两次onload

javascript - 如何更改与下拉菜单一起使用的按钮的 href 链接?

javascript - JSPDF 和 AutoTable 的问题

javascript - 悬停时更改图像

javascript - 只有 x 轴的 Highcharts 折线图

javascript - 我应该实际使用哪个版本的 jQuery?

javascript - 使用node-twitter发推文时出现错误401