知识点
答案
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=()=>thisfn()// 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
