前端题目总结

121 阅读2分钟

面试题目总结

  1. const var let 区别,const 定义的对象 能改变属性吗?
  2. 如何实现继承,prototype
  3. 如何获取dom元素
  4. react、vue的区别,如果有一个大型项目,你会选择哪种技术类型,以及为什么? 分析性能、维护等
  5. vue的各种生命周期,页面加载完在哪个生命周期;
  6. vue的路由守卫
  7. 打包怎么更小,dsn、代码压缩、sourcemap
  8. 页面局部更新,key,nexttick的异步回调
  9. 如何组件间传值的方式
  10. 自定义指令;
  11. 函数
    • 普通函数在定义的时候this是不确定指向谁的,在使用的时候this才确定。
    • 箭头函数在定义的时候就已经确定下来了this指向谁。this的指向跟上层作用域的this指向相同。
  12. 什么是闭包
    • 一个嵌套的内部(子)函数引用了嵌套的外部(父)函数的变量(函数)时, 就产生了闭包,闭包就是函数里面的函数,闭包可以让函数外部能操作函数里面的数据。
  function fn1() {
  var a = 2;
  function fn2() {
      a++;
      console.log(a);
  }
  return fn2;
  }
  var f = fn1(); // 一个函数,这时候已经产生了闭包
  f(); // 3
  f();

13、es6 Map类型数据

var jjj=new Map();
jjj.set(-1,'dsfsd');
jjj.set(-2,'lkk')
jjj.set(-3,'vfffsd');
jjj
输出:Map(3) {-1 => 'dsfsd', -2 => 'lkk', -3 => 'vfffsd'}[[Entries]]0: {-1 => "dsfsd"}1: {-2 => "lkk"}2: {-3 => "vfffsd"}size: 3[[Prototype]]: Map
jjj.size
输出:3
jjj.has(-3)
输出:true
jjj.has(-4)
输出:false
jjj.get(-2)
输出:'lkk'
jjj.keys()
输出:MapIterator {-1, -2, -3}

把Map数据转成Array数据:Array.from(jjj);

定义Map数据:const m = new Map([ 
 ["key1", "val1"], 
 ["key2", "val2"], 
 ["key3", "val3"] 
]); 

把Map数据转成Array数据:[...jjj]

for (const tt of jjj) {console.log('ttt',tt)}
for (const [skey, svalue] of jjj) {console.log('skey',skey)};

var allEnergyMap = new Map();
for (const [skey, svalue] of secondResMap) {
    var totalEnergy = (svalue || []).reduce((result, ele) => {
      var energyData = ele.energyData || 0;
      result = result + energyData;
      return result;
    }, 0);
    allEnergyMap.set(skey, totalEnergy);
}