map和foreach区别
1.map支持链式调用,可以在返回的新数组接着操作
2.应该还有语义上的区别,我看到map我会认为是在做映射,看到filter是在做过滤,看到foreach是在进行遍历,可读性更高
null和undefined区别
-
undefined表示未定义,一般声明了变量但是没有定义(没值)的时候会返回undefined typeod为undefined可能会
-
null 表示为空,主要用于赋值给一些可能会返回对象的变量,作为初始化, typeof 为 object
-
null == undefined // true
null === undefined //false
为什么0.1+0.2!==0.3,如何让他相等
因为浮点数运算的精度问题,在计算机运行过程中,需要将数据转化为二进制。然后再进行计算,因为浮点数自身小数位数的限制而截断的二进制再转化为十进制,就变成了 0.30000000000000004,所以再计算会产生误差。
解决方案 转化为整数,再相加之后转会小数,具体做法,先乘以10相加后再除以10
let x=(0.1*10+0.2*10)/10;
console.log(x===0.3)
使用number对象的toFixed方法,只保留一位小数点。
(n1 + n2).toFixed(2)
判断数组的方式有哪些
1.Object.prototype.toString.call()
Object.prototype.toString.call(obj).slice(8,-1) === 'Array';
2.instanceof
Array.isArrray(obj);
3.Array.isArray
Array.isArrray(obj);
4.通过原型链做判断
obj.__proto__ === Array.prototype;