js运行机制

83 阅读1分钟
  1. js是因为有dom这个概念,为了避免同时修改dom所以单线程,同理 js中其他另开线程的操作都没有dom概念,只有主线程有dom
  2. 因为单线程,js是一行一行依次解析的所以异步任务需要等待执行完成才能执行后面的操作,所以延伸出了事件循环 eventloop
  3. eventloop是指在主线程之外延伸出其他线程处理异步操作,执行栈跟任务队列,js在按顺序执行时在遇到异步任务之前会把同步任务宏仁务放到执行栈里,微任务会放到任务队列里。执行栈后进先出,任务队列先进先出。同步任务>宏仁务>微任务。输出是微任务先输出,promise中resolve之前的代码是同步任务。
  4. 变量声明提前
  5. this 谁调用方法this就指向谁,否则就是window
  6. 改变this指向通过call apply bind call参数只有一个,apply参数多个,bind返回一个函数需要执行。