前言

现在这个社会,你想找到一份高薪工作实在,太不容易了。就比如,我现在大三,对下一年的实习感到了很大的焦虑。于是,我提前复习一些关键的问题,可以通过面试,至少在巩固我的学习过程中,有所收获。

FAQ

箭头函数和普通函数的区别

  1. 箭头函数不能用于构造函数
  2. this的指向不同,箭头函数不创建this,也可以说箭头函数本身没有this,但是它在声明的可以捕获上下文的this供自己使用。this一旦被捕获,就不再发生变化。
  3. 箭头函数不绑定arguments,取而代之的是rest参数解决。
  4. 其他区别
    • 箭头函数不能Generator函数,不能使用yeild关键字
    • 箭头函数不具有prototype原型对象
    • 箭头函数不具有 super
    • 箭头函数不具有new.target
  5. 总结:箭头函数的this永远指向上下文的this,任何方法都改变不了指向。如call,bind,apply
    普通函数的this指向它对象

NodeList和Array的区别

  1. 类型:NodeList是一个类数组的对象,它表示由一个DOM元素节点组成的集合,它通常是通过使用像querySlectorAll这样的方法返回的结果
  2. 方法和属性:NodeList对象具有一些特定的方法和属性,例如item(index)方法通过索引获取节点,length,表示节点的长度,然而它没有像Array那样丰富的方法,如push,pop,forEach
    Array对象具有丰富的内置方法和属性,可以方便的操作数组元素
  3. 可迭代性:NodeList对象是不是可迭代的(iterable),不能直接使用forof循环来遍历其中的元素,如果要遍历,就得先使用for传统或者是转换成一个数组再进行遍历。
  4. 功能差异:由于NodeList是基于DOM结构的,所以它在动态性方面更强。当文档结构发生变化时,NodeList会自动更新,以反映最新的DOM状态。这意味着如果使用querySelectorAll获取了某个元素的NodeList,并且之后文档中添加或移除了相应的元素,NodeList会自动更新,而不需要重新查询。相比之下,Array是静态的,不具备自动更新的能力。
    总结:综上所述,NodeList适用于处理DOM节点集合,而Array则适用于通用的数据存储和操作。如果需要使用数组的大部分方法和功能,可以将NodeList转换为Array,例如通过Array.from(nodeList)或使用扩展运算符nodeList。