在面试前端开发中,原生JavaScript能力的高低是占比很大的一个体现部分,不少考官会有要求现场写一些JS方法,以下整理了一些前端面试的各种方法,希望能帮到你。
- promise的实现
|
|
- bind的实现
|
|
- 函数防抖
|
|
- 函数节流
|
|
- 深拷贝
|
|
- 单例模式
|
|
- 发布订阅模式
|
|
- new的实现
|
|
闭包:访问函数内部变量的函数
123456789101112function A() {var count = 0;function B() {count ++;console.log(count);}return B;}var C = A();C();// 1C();// 2C();// 3冒泡排序
1234567891011function bubbleSort(arr) {let len = arr.length;for (var i = 0; i < len; i++) {for (var j = 0; j < len - 1 - i; j++) {if (arr[j] > arr[j+1]) { //相邻元素两两对比[arr[j], arr[j+1]] = [arr[j+1], arr[j]]; //元素交换}}}return arr;}快排
1234567891011121314151617181920function quickSort(arr){//如果数组<=1,则直接返回if(arr.length <= 1) { return arr; }var pivotIndex = Math.floor(arr.length/2);//找基准,并把基准从原数组删除var pivot=arr.splice(pivotIndex, 1)[0];//定义左右数组var left=[];var right=[];//比基准小的放在left,比基准大的放在rightfor(var i=0; i<arr.length; i++){if(arr[i]<=pivot){left.push(arr[i]);}else{right.push(arr[i]);}}//递归return quickSort(left).concat([pivot],quickSort(right));}数组去重
123456let arr = [1,1,2,3,4,4,4]let result1 = arr.filter((val, key, self) => self.indexOf(val) === key)let result2 = [...new Set(arr)]let result2 = Array.from(new Set(arr))