中级前端工程师要回的知识

发布时间:2023-01-23 11:00

1.什么是函数柯里化?

是把接受多个参数的函数变换成接受一个单一参数的函数,是典型的闭包函数

2.call、apply、bind区别?

相同点:

        作用一致、都是修改this的指向。

不同点:

        (1)传参方式不同,call()是按照顺序传参,apply()是通过数组/伪数组传参。

        (2)执行机制不同,call()和apply()是立即执行函数,bind()不会立即执行函数,而是会返回一个修改过this的新函数。

call(修改后的this,形参1,形参2...)

apply(修改后的this,数组/伪数组)

bind(修改后的this) bind不会立即执行函数,而是返回一个修改之后的函数。

3.说说Event Loop.

首先js是单线程,js执行程序的过程中有优先级之分,会先执行js线程的同步任务,然后再执行微任务(promise.then,process.nextTickObject.observeMutationObserver),最后执行宏任务scriptsetTimeOutsetIntervalsetImmediate

经典例子:

setTimeout(function(){
    console.log('1')
});
new Promise(function(resolve){
    console.log('2');
    resolve();
}).then(function(){
    console.log('3')
});
console.log('4');
new Promise(function(resolve){
    console.log('5');
    resolve();
}).then(function(){
    console.log('6')
});
setTimeout(function(){
    console.log('7')
});
function bar(){
    console.log('8')
    foo()
}
function foo(){
    console.log('9')
}
console.log('10')
bar()
  • 最终结果:2,4,5,10,8,9,3,6,1,7

ItVuer - 免责声明 - 关于我们 - 联系我们

本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

桂ICP备16001015号