小米2020校招前端笔试题小记

小米这边的卷子全是选择题,不定项和单选混着来,也不知道他们真实的卷子是不是这样的。

这里再记两个关于JavaScript的问题。

Keyword: Array,Number

题A

调用数组的以下哪些方法,可能会改变原数组的值:

  • sort
  • reverse
  • splice
  • slice

sort和reverse一定是会改变的,这个不用多想,重点在于后面的splice和slice上,这俩长太像了太容易弄混。

1
arrayObj.slice(start, end)

slice不会操作原数组,它的作用是返回数组中的某一段元素。

比如说:

1
2
var a = [1, 2, 3, 4, 5];
console.log(a.slice(2, 4));

得到的是[3, 4],原数组a不会有变化。

而splice的则是对一定会对原数组做改变,它的功能是在原数组的基础上删除掉某一段,或者在指定位置添加内容(参数3)。

题B

以下JavaScript代码的运行结果是:

1
console.log(Number.MAX_VALUE > 0, Number.MIN_VALUE < 0)
  • true true
  • true false
  • false true
  • false false

Number.MAX_VALUE这个常量并非是Infinity,而是1.7976931348623157e+308,大于这个值的会被处理成Infinity。

Number.MIN_VALUE的取值则是5e-324,这个要特别注意,它取得不是负数,也不是0,它是接近0的数,所以0是小于Number.MIN_VALUE。

小结

这两个内容在前端领域里面应该算是基本常识,记下来一次之后再遇到这类问题就基本上是秒解。