今天,给大家分享的是一篇干货知识《10个JavaScript常见高级知识点》,主要针对初级前端和想要面试找工作的同学,想要学好前端,除了要掌握JavaScript的基础知识外,还需要掌握一些高级的知识点。
学会了下面这些常见的高级知识点可以提升我们的开发效率,帮助我们更快的进阶,还能帮助大家在面试的时候能够和面试官谈笑风生。
好了,话不多说,一起开始学起来~~~
1. 防抖
定义:在事件被触发n秒后再执行回调,如果在这n秒内又被触发,则重新计时。
function debounce(fn, time){
let timer
return function(){
clearTimeout(timer)
let args = arguments
timer = setTimeout(()=>{
fn.apply(this, args)
}, time)
}
}
2. 节流
定义:规定在一个单位时间内,只能触发一次函数。如果这个单位时间内触发多次函数,只有一次生效。
function throttle(fn, time) {
let timer = null
return function () {
if(timer) return
timer = setTimeout(() => {
fn.apply(this, arguments)
timer = null
}, time)
}
}
3. 高阶函数
定义:接受和/或返回另外一个函数的函数被称为高阶函数。常见的像数组的map、reduce、filter这些都是高阶函数
// 简单的高阶函数
function add(x, y, fn) {
return fn(x) + fn(y);
}
function fn(num) {
return Math.abs(num)
}
add(-5, 6, fn); // 11
4. 函数柯里化
定义:函数柯里化指的是将能够接收多个参数的函数转化为接收单一参数的函数,并且返回接收余下参数且返回结果的新函数的技术。
函数柯里化的主要作用和特点就是参数复用、提前返回和延迟执行。
示例:
// 普通的add函数
function add(x, y) {
return x + y
}
// 柯里化后
function curryingAdd(x) {
return function (y) {
return x + y
}
}
add(1, 2) // 3
curryingAdd(1)(2) // 3
实现:
function curry(func) {
return function cu