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 空
根据到的意思,null和undefined都表示缺少某物,意为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 上的其他文章
让我们利用一些带有 JavaScript 数组的 WTF。
hackernoon.com](https://hackernoon.com/oh-my-goodnejs-arrays-f9e9e4f03c97)