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

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

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

requireimport的区别

  • require支持 动态导入,import不支持,正在提案 (babel 下可支持)
  • require是 同步 导入,import属于 异步 导入
  • require是 值拷贝,导出值变化不会影响导入值;import指向 内存地址,导入值会随导出值而变化

15. 防抖与节流

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

  • 防抖 (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

(编辑:西安站长网)

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

热点阅读