JS WTF🦄带编号

JS WTF🦄带编号

原文:https://medium.com/hackernoon/js-wtf-with-number-5cd73514befb

是时候乘坐一些编号为的 JavaScript WTF 了。

‘0.0’

当将String转换为Number时,JS 能够将数值之前或之后的 **period** 解释为十进制数的周期。这就是为什么 get 0作为前两个表达式的结果。

'0.''.0'都代表小数0.0

这里是规格:

我知道。我知道。细节太多!

但是,“我 f 语法 *无法将字符串解释为 StringNumericLiteral**的展开,那么[to number](https://www.ecma-international.org/ecma-262/6.0/index.html#sec-tonumber)的结果就是NaN。*,它解释了Number('.')的结果。

即表达式'.'与上面红框中高亮显示的字符串文字不匹配。

{}对[]

Number应用于对象时,JavaScript 试图将其转换为原始值

根据规范,它首先执行.valueOf()

因为{}[].valueOf()也返回一个对象,所以 JS 尝试.toString()

这个 WTF 的原因在于 .toString()的结果。

操作({}).toString()实际运行Object.prototype.toString() ,根据定义"[object Object]"。然而,正如我们之前看到的,当字符串不能被解释为数值时,将字符串转换为数字会返回NaN这解释出了第一个结果Number({}) // NaN

至于[].toString(),它执行Array.prototype.toString()并输出""顾名思义Number("")就是0

因此Number([])就是0

好!让我们休息一下,看看这只小猫👀

未定义 vs 空

根据的意思,nullundefined都表示缺少某物,意为false

然而,我们可以把undefined看作更一般的“缺席”这是因为当没有其他值被赋值时,它被用来表示变量值。

未定义已经声明了一个变量,但是没有给它赋值。

另一方面,null是一个分配值。它可以作为“无值”的表示赋给变量。

null,变量已声明,但其值为空。

而且,他们有不同的typeof

因此我来到相信这就是为什么在执行Number(undefined)undefined被转换为NaN,意味着没有赋值

以及null到值0,意味着是值假值表示。

最小值

很容易理解[Number.MAX_VALUE](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_VALUE)0大,但是意识到[Number.MIN_VALUE](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MIN_VALUE)不比0小就很奇怪了。

那是因为Number.MIN_VALUE 实际上并不是最小可能值而是最小可能正值,这是一个非常非常小的值 ( 5e-324具体来说),然而大于0

为了表示可能的最小值,我们可以安全地使用[Number.MIN_SAFE_INTEGER](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MIN_SAFE_INTEGER),即-(2^53–1)

toFixed()

在数值上有一个period就是说它有一个小数部分。然而,这使得静态方法的使用不一致。

对于表达式42.toFixed(2),因为数值42.是一个有效的数字,JS 继续解释完整的表达式。然而,它发现toFixed(2),它的没有有意义的值(与表示静态方法执行的表达式.toFixed(2)相反)。)并抛出语法错误。

甚至42.toFixed(2)之间的间隔也不能解决问题。

然而,42.toFixed(2)之间的间隔解决了问题。甚至是双周期42..toFixed(2)😮

42.toFixed(2)!== 42..toFixed(2)

尽管如此,这就是 JS 对代码的解释。

< your WTF >

如果你发现任何应该在这里的 WTF,请告诉我👐

数字到此为止。

由于🍻

一定要看看我在 JS WTF 上的其他文章

[## JS WTF🦄使用数组

让我们利用一些带有 JavaScript 数组的 WTF。

hackernoon.com](https://hackernoon.com/oh-my-goodnejs-arrays-f9e9e4f03c97)


本站为非盈利网站,作品由网友提供上传,如无意中有侵犯您的版权,请联系删除