1、null == undefined //true null === undefined //false
==(等于)运算符: 用途:用于比较两个值是否相等,不考虑数据类型。 规则:如果两个操作数的类型相同,那么进行普通的相等比较,即比较它们的值是否相等。如果操作数的类型不同,会进行类型转换,然后再比较它们的值是否相等。===(全等)运算符: 用途:用于比较两个值是否严格相等,不仅要比较值,还要比较数据类型。 规则:如果两个操作数的类型不同,不会进行类型转换,直接返回false。只有在类型相同的情况下,才会比较它们的值是否相等。
2、怎样判断类型
1.typeof
2.instanceof
3.Object.prototype.toString.call()
4.constructor
3、0.2 + 0.1 != 0.3
原因:
1.因为浮点数运算的精度问题。在计算机运行过程中,需要将数据转化成二进制,然后再进行计算。
2.js中的Number类型遵循IEEE754标准,在IEEE754标准的64位浮点数相加,因为浮点数自身小数位数的限制而截断的二进制在转化为十进制,就变成0.30000000000000004,所以在计算时会产生误差
4、call、apply、bind区别
通过 apply 和 call 改变函数的 this 指向,他们两个函数的第一个参数都是一样的表示要 改变指向的那个对象,第二个参数,apply 是数组,而 call 则是 arg1,arg2... 这种形式。通 过 bind 改变 this 作用域会返回一个新的函数,这个函数不会马上执行