面试题 二

56 阅读1分钟

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;