答案是 2 3 6 5 4 1
第一轮处理:
首先,setTimeout是宏任务,遇到后直接放入宏任务队列中。
进入promise,打印2
进入for循环,由于条件判断i后直接为false,所以resolve不会被多次执行。
i为9999时,resolve被执行,then被放入微任务队列中。
继续向下执行,打印3
继续向下执行,nextTick在下一轮事件循环开始时执行
继续向下执行,打印6
第二轮处理:
首先处理nextTick,打印5
首先处理微任务队列,打印4
接着处理宏任务队列,打印1
js 宏任务和微任务
[].filter.call(str,(s,i,o)=>o.indexOf(s)==i).join('');
Javascript一句代码实现JS字符串去除重复字符
输出 6 6 6 6
fn.call : 2+3+1=6
fn.apply : 2+3+1=6
bound(3) : 1+2+3=6
bound.call : 此时this指针仍为obj,因此仍然输出6
borderBox 10px10px
contentBox 16px16px
Vue自定义权限指令v-auth实现按钮权限控制
自定义指令