Js微任务和宏任务
//js是单线程语言
/*
js代码执行流程:同步执行完 ==> 事件循环
同步的任务都执行完了,才会执行事件循环的内容
进入事件循环:请求,定时器,事件
事件循环中包含:[微任务,宏任务]
微任务:promise.then,Object.observe
宏任务:setTimeout,setInterval
要执行宏任务的前提是清空了所有的微任务
流程:同步==>事件循环[宏任务和微任务]==>微任务==>宏任务
*/
js作用域考题
/*
js作用域
1,除了函数外,js是没有块级作用域
2,作用域链:内部可以访问外部的变量,但是外部不能访问内部的变量
注意:如果内部有,优先查找内部,如果内部没有就查找外部的
3,注意声明变量是用var还是没写(window)
4,注意,js有变量提升机制,[变量悬挂声明]
5,优先级,声明变量->声明普通函数->参数->变量提升
面试的时候怎么看?
1,本层作用域有没有此变量[注意变量提升]
2,注意,js除了函数外没有块级作用域
3,普通声明函数是不看写函数时候的顺序
*
*/
箭头函数和普通函数的区别
1,this指向问题,
箭头函数的this是在定义时就决定的,而且不可修改(call,apply,bind)
箭头函数的this指向定义是外层第一个普通函数的this
2,箭头函数不能new(不能当做构造函数)
3,箭头函数没有prototype,没有arguments
//js判断变量是不是数组
方式一:isArray
var arr = [13,14,520]
console.log(Array.isArray(arr))
方式二:instanceof
var arr = [13, 14, 520]
console.log(arr instanceof Array)