综合面试题(一)
1. var 和 let const区别
1.var es5 ,let const es6 ;var变量提升
2.var,let定义变量可修改;const定义常量不可修改,定义对象,内部属性可以修改
3.let const 块级作用域
2.闭包调用:自由变量的查找要在函数定义的地方不是函数调用的地方
let a = 10 function fn(){ console.log(a) //10 } function close(fn){ let a = 20 fn() } close(fn) //10
3.错误捕获
try catch
window.onerror
4.call apply 手写实现
逻辑:1.改变this指向2.调用函数3.删除多余属性
1 //call
Function.prototype.call2 = function(context){ 2 context = context?Object(context):window 3 context.fn = this 4 args = [...arguments].slice(1) 5 let result = context.fn(...args) 6 delete context.fn 7 return result 8 }
Function.prototype.apply2 = function(context,arr){
context = context?Object(context):window;
context.fn = this
let result
if(arr){
result = context.fn(arr)
}else{
result = context.fn()
}
delete context.fn
return result
}
bind
- 1、可以指定
this - 2、返回一个函数
- 3、可以传入参数
- 4、柯里化

浙公网安备 33010602011771号