js之意想不到的结果

js 是弱类型语言 ,在进行计算时 如果遇到不能计算的单位,就会进行默认转换

1、typeof NaN  结果为 “number”  原因:NaN 表示 不是不是一个数字(Not a Number),因此结果是number

2、9,999,999,999,999,999  输出结果为 100,000,000,000,000 原因:js能够精确的最大整数 貌似只能表示16位十进制,大于这个数就会四舍五入,按照IEEE 754标准的舍入规则,一般舍入的是偶数

3、0.5 + 0.1 == 0.6  true

  但是 0.1 + 0.2 == 0.3  false

4、Math.max()   输出 -Infinity  因为如果没有大于负无穷大的数字,所有大于负无穷大的数字都应该是最大值

  Math.min() 输出 Infinity  因为所有小于正无穷大的数字都应该是列表中最小的

5、[] + []  输出""  因为 + 是默认向字符串方向转化,- * 是默认向数字方向转化  所以相当于是 "" +"" = ""

6、 [] + {} 输出 "[object object]"  因为 {} 是 对象

7、{} +[] 输出 0

8、true + true + true === 3   输出 true  因为true转化为字符串是1 

9、true - true 输出 0

10、 true == 1  输出 true 

   true === 1 输出 false  因为=== 即比较类型又比较数值 ,类型不一样,所以为false

11、 (! + [] + [] + ![] ).length 输出 9 

12、 9 + '1' 输出"91"   因为 + 是默认向字符串方向转化

13、 91 - "1"  输出 90  因为 - * 是默认向数字方向转化

14、 [] == 0 输出 true 

原文地址:https://www.cnblogs.com/sllzhj/p/9257197.html