综合面试题(一)

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、柯里化

 

posted @ 2021-04-29 17:15  恣肆zisi  阅读(37)  评论(0)    收藏  举报