Author Avatar
YZ 3月 21, 2018
  1. js作用域在函数内部,for循环等语句块中无法定义局部作用域变量;let解决

  2. 闭包:函数作为结果值返回;

    三大特征:函数嵌套,内部函数引用外部函数的参数和变量,参数和变量不被垃圾回收机制收回

    优点:希望某变量长期驻留在内存中;避免全局变量的污染;私用成员的存在

  3. AJAX:Asynchronous Javascript and XML js执行异步网络请求

  4. react 所有组件类必须有自己的render方法,用于输出组件;第一个字母大写

    组件类的PropTypes属性,用来验证组件实例的属性是否符合要求

    createClass【过时】 or extends React.Component

    https://www.cnblogs.com/Unknw/p/6431375.html

    React认为小写开头是HTMLtag

  5. js map()方法按照原始数组元素顺序依次处理元素

  6. 事件机制

    事件监听W3C 捕获,目标,冒泡

    捕获:父—>子

    冒泡:子—>父

    事件委托:事件代理,利用冒泡原理,将事件加到父级

    例子:ul li 添加li还能有事件,而且不使用委托非常耗性能

  7. css3

  8. JS Promise

  9. JS 单线程

    • 所有同步任务都在主线程上执行,形成一个执行栈;
  • 主线程之外,还存在一个任务队列,只要异步任务有了运行结果,就在任务队列中放置一个事件;【mouseClick, KeyPresses, Network events】
  • 一旦执行栈中的所有同步任务执行完毕,会读取任务队列。异步任务结束等待,进入执行栈,开始执行;

    读取任务队列的过程是循环不断的,运行机制称为Event Loop【事件循环】

    任务队列可以放置定时事件,setTimeout()

    macrotask VS microtask

    EL中正在执行的任务,是从macrotask中来的;当我们想以同步方式来处理异步任务的时候就用microtask【需要直接在某段代码后执行某个任务】;

    macrotask:setTimeout setInterval setImmediate I/O UI渲染

    microtask:Promise process.nextTick Object.observe MutationObserver

  • task queue == macrotask queue != microtask queue

  1. JS Callback 就是那些会被主线程挂起来的代码;异步任务必须指定回调函数。

    A callback is a function that is passed as an argument to another function and is executed after its parent function has completed.

  2. 浏览器的执行原理