>typeof NaN
<"number"
//not a number,但它是number type的,NaN 的检测 isNaN。
>9999999999999999
<10000000000000000
//js整数精度15位
>0.5 + 0.1 == 0.6
<true
//小数精度17位
>0.1 + 0.2 == 0.3
<false
//0.1+0.2值为0.30000000000000004.永远不要测定某个特点的浮点数值
//可以通过乘以10或除以10来计算: 0.3
>Math.max()
<-Infinity
// max 是 Math 的静态方法,返回给定的一组数字中的最大值。
// 如果没有参数,结果为[`-bInfinity`]
// 如果给定的参数中至少有一个参数无法被转换成数字,则会返回 [`NaN`]
>Math.min()
<Infinity
// min 是 Math 的静态方法,返回给定的一组数字中的最大值。
// 如果没有参数,结果为[`Infinity`]
// 如果给定的参数中至少有一个参数无法被转换成数字,则会返回 [`NaN`]
>[] + []
<""
//+中空数组转为空字符串,
//在-,*运算中[]被转化为0
>[] + {}
<"[object object]"
>{} + []
<0
>true + true + true === 3
<true
>true - true
<0
>true == 1
<true
>true === 1
>false
>(!+[]+[]+![]).length
<9
//我也看不懂,js是门玄学
>9+"1"
<"91"
>91-"1"
<90
>[] == 0
<true
在JavaScript中,加法的规则其实很简单,只有两种情况:你只能把数字和数字相加,或者字符串和字符串相加,所有其他类型的值都会被自动转换成这两种类型的值.
参考文章:https://segmentfault.com/a/1190000008038678
参考文章:https://github.com/jawil/blog/issues/1
原文链接:yinzhuo.online
网友评论