javascript - `toPrecision` 和文字

标签 javascript

所以我刚发现这个:

let number = -1234;
console.log(number.toPrecision(3)); // -1.23e+3
console.log(-1234..toPrecision(3)); // -1230

谁能解释一下到底发生了什么?我唯一能想到的是,在第二种情况下,优化器会预先计算表达式,并且优化器对 toPrecision 的实现与编译器的实现不同。

测试于:

  • Safari/Mac,版本 10.1 (12603.1.30.0.34)
  • Chrome/Mac,版本 59.0.3071.104(官方构建)(64 位)
  • Firefox/Mac,54.0.1(64 位)

编辑:回复:由小数点触发,很好的观察 - 但是,如果我们将小数点添加到 number 中,它不会突然减幂:

let number = -1234.5;
console.log(number.toPrecision(3));  // -1.23e+3
console.log(-1234.5.toPrecision(3)); // -1230

最佳答案

这是一个与运算符优先级相关的问题。

添加括号后,您的表达式将如下所示:

(-1234).toPrecision(3)  // "-1.23e+3"
-(1234..toPrecision(3)) // -1230

1234..toPrecision(3)先计算出来,就是"1.23e+3"
那么表达式就变成了-"1.23e+3",也就是-1230

关于javascript - `toPrecision` 和文字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45070271/

相关文章:

Javascript MarkActive 函数

javascript - Ajax 无法在 WordPress 中运行

javascript - gmail如何使用ajax?

javascript - 每个项目都有特定的名称

javascript - NPM - 添加到 package.json 但不安装

javascript - 如何让 cron 作业运行 Node.js 脚本以从 .env 文件中读取变量?

javascript - 连续双击会增加 javascript 中的边界框大小

javascript - 尝试用时间间隔更新幻灯片

javascript - jsnetworkx 改变节点颜色,访问邻居

javascript - 从 GatsbyJS 中的本地插件创建自定义页面时出错