知识点
答案
var function fn(a,b) {
console.log('参数',a,b)
console.log(this)
}
fn(1,2)
// 1.输出结果是什么?
fn.call({},3,4)
// 2.输出什么?
fn.apply(100,[5,6])
// 3.输出什么?
fn.bind({},1,2)
// 4.输出什么?为什么
var newFn = fn.bind({},1,2)
newFn()
// 5.输出什么?
var fn=()=>this
fn()
// 6.输出什么?
fn.call({})
// 7.输出什么?
知识点
- 全局函数调用者是 window this指向window
- 箭头函数 this 指向外层 定义完成之后不能修改
- call apply bind
- 共同点
- 都在函数原型链上,都可以改变一个函数执行的时候内部this指向
- 区别
- call (this指向,参数1,参数2)
- apply ( this指向,[参数1,参数2])
- bind ( this指向, 参数1, 参数2)
- 不会调用函数,只会返回一个新的函数 答案
- 共同点
- ‘参数’,1,2 window
- ‘参数’,3,4 {}
- ‘参数’,3,4 100
- 返回一个新的函数,bind传参但是不调用函数
- ‘参数’,1,2 {}
- window
- window
console.log('1-script start');
setTimeout(function() {
console.log('2-setTimeout');
}, 0);
Promise.resolve().then(function() {
console.log('3-promise1');
}).then(function() {
console.log('4-promise2');
});
console.log('5-script end');
// 写出log的执行顺序
知识点
- 微任务(异步任务) 宏任务(同步任务)
.then()
后面和定时器是微任务 答案输出顺序是 15342