前端面试每日3+2(第11天)

12/12/2019 每日3+2

当你发现自己的才华撑不起你的野心时,就请安静下来学习吧!

鲁迅说过:答案仅供参考...

# 1、['1', '2', '3'].map(parseInt)。what?why?

解析:

第一眼看到这个题目的时候,脑海跳出的答案是 [1, 2, 3],但是真正的答案是[1, NaN, NaN]。

  • 首先让我们回顾一下,map函数的第一个参数callback: var new_array = arr.map(function callback(currentValue[, index[, array]]) { // Return element for new_array }[, thisArg]) 这个callback一共可以接收三个参数,其中第一个参数代表当前被处理的元素,而第二个参数代表该元素的索引。

  • 而parseInt则是用来解析字符串的,使字符串成为指定基数的整数。 parseInt(string, radix) 接收两个参数,第一个表示被处理的值(字符串),第二个表示为解析时的基数。

  • 了解这两个函数后,我们可以模拟一下运行情况

    1. parseInt('1', 0) //radix为0时,且string参数不以“0x”和“0”开头时,按照10为基数处理。这个时候返回1
    2. parseInt('2', 1) //基数为1(1进制)表示的数中,最大值小于2,所以无法解析,返回NaN
    3. parseInt('3', 2) //基数为2(2进制)表示的数中,最大值小于3,所以无法解析,返回NaN
  • map函数返回的是一个数组,所以最后结果为[1, NaN, NaN]

  • 最后附上MDN上对于这两个函数的链接,具体参数大家可以到里面看 parseInt (opens new window)map (opens new window)

参考答案 (opens new window) ---- 感谢【Daily-Interview-Question】 (opens new window)

# 2、写 React / Vue 项目时为什么要在列表组件中写 key,其作用是什么?

解析:

key是给每一个vnode的唯一id,可以依靠key,更准确, 更快的拿到oldVnode中对应的vnode节点。

  1. 更准确 因为带key就不是就地复用了,在sameNode函数 a.key === b.key对比中可以避免就地复用的情况。所以会更加准确。

  2. 更快 利用key的唯一性生成map对象来获取对应节点,比遍历方式更快。(从这个角度看,map会比遍历更快。)

参考答案 (opens new window) ---- 感谢【Daily-Interview-Question】 (opens new window)

# 3、你知道全部的对象分类吗?简单说明下分类?(winter重学前端)

# 4、JavaScript常用的内置对象有哪些?举例并说明该对象常用的方法?(每种3-5个)

# 5、JavaScript的Dom节点操作创建、插入、删除、复制、查找?

Last Updated: 1/14/2020, 7:56:38 AM
    asphyxia
    逆时针向