加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

中高级前端大厂面试秘籍,为你保驾护航金三银四,直通大厂

发布时间:2019-02-21 10:57:50 所属栏目:建站 来源:佚名
导读:引言 当下,正面临着近几年来的最严重的互联网寒冬,听得最多的一句话便是:相见于江湖~。缩减HC、裁员不绝于耳,大家都是人心惶惶,年前如此,年后想必肯定又是一场更为惨烈的江湖厮杀。但博主始终相信,寒冬之中,人才更是尤为珍贵。只要有过硬的操作和

防抖与节流函数是一种最常用的 高频触发优化方式,能对性能有较大的帮助。

  • 防抖 (debounce): 将多次高频操作优化为只在最后一次执行,通常使用的场景是:用户输入,只需再输入完成后做一次输入校验即可。
  1. function debounce(fn, wait, immediate) { 
  2.     let timer = null 
  3.  
  4.     return function() { 
  5.         let args = arguments 
  6.         let context = this 
  7.  
  8.         if (immediate && !timer) { 
  9.             fn.apply(context, args) 
  10.         } 
  11.  
  12.         if (timer) clearTimeout(timer) 
  13.         timer = setTimeout(() => { 
  14.             fn.apply(context, args) 
  15.         }, wait) 
  16.     } 
  • 节流(throttle): 每隔一段时间后执行一次,也就是降低频率,将高频操作优化成低频操作,通常使用场景: 滚动条事件 或者 resize 事件,通常每隔 100~500 ms执行一次即可。 
  1. function throttle(fn, wait, immediate) { 
  2.     let timer = null 
  3.     let callNow = true 
  4.      
  5.     return function() { 
  6.         let context = this, 
  7.             args = arguments 
  8.  
  9.         if (callNow) { 
  10.             fn.apply(context, args) 
  11.             callNow = false 
  12.         } 
  13.  
  14.         if (!timer) { 
  15.             timer = setTimeout(() => { 
  16.                 fn.apply(context, args) 
  17.                 timer = null 
  18.             }, wait) 
  19.         } 
  20.     } 

16. 函数执行改变this

由于 JS 的设计原理: 在函数中,可以引用运行环境中的变量。因此就需要一个机制来让我们可以在函数体内部获取当前的运行环境,这便是this

因此要明白 this 指向,其实就是要搞清楚 函数的运行环境,说人话就是,谁调用了函数。例如:

  • obj.fn(),便是 obj 调用了函数,既函数中的 this === obj
  • fn(),这里可以看成 window.fn(),因此 this === window

但这种机制并不完全能满足我们的业务需求,因此提供了三种方式可以手动修改 this 的指向:

  • call: fn.call(target, 1, 2)
  • apply: fn.apply(target, [1, 2])
  • bind: fn.bind(target)(1,2)

17. ES6/ES7

由于 Babel 的强大和普及,现在 ES6/ES7 基本上已经是现代化开发的必备了。通过新的语法糖,能让代码整体更为简洁和易读。

  • (编辑:核心网)

    【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读