event loop 事件循环机制 和 DOM 渲染
定义:同步代码会放到调用栈中执行
当调用栈执行完后,开始Event Loop工作,执行调用队列中
放到调用栈中执行,一直执行
调用栈
调用队列
1. 微任务队列(js引擎自带,例:Promise)
2. 宏任务队列(浏览器或Nodejs环境,例:setTimeout)
DOM渲染
1. 微任务在DOM渲染前
2. 宏任务在DOM渲染后
原型链
三个名次:函数本身(构造函数)、原型对象、实例对象
构造函数有一个原型对象(prototype)
原型对象中有个contrustor指向自身的构造函数
实例有一个指针(__proto__)指向函数的原型对象(prototype)
es6 之前(没有 class)
- 函数本身就是构造函数
- 实例化时,将原型对象给到实例对象
闭包:内部函数可以访问外部函数变量;(立即执行函数常用)
Promise
- Promise 的三种状态 pending,resolved,rejected
- resolved 状态的 Promise 执行 then 方法
- rejected 状态的 Promise 执行 catch 方法
- catch 不报错,返回的是 resolve 的状态的 Promise
正则
*:0或任意次 +:至少一次 ?:0或1次 []:一个字符集合 {n, m} ^:开始位置 $:结束位置
\w : (小写w) 表示字母或数字,等价于 [a-zA-Z0-9]
\W : (大写W)非字母且非数字,与\w相反 等价于 '[^A-Za-z0-9_]'
\s : (小写s)匹配一个空格字符,包括:空格,换行,回车,tab,等价于[ \n\r\t\f]
\S : (大写S)匹配非空格字符,\s的相反 等价于 [^ \f\n\r\t\v]。
\d : 表示10进制数字,等价于 [0-9]
\D : 匹配一个非数字字符。等价于 [^0-9]。
\f : 匹配一个换页符。等价于 \x0c 和 \cL。
\n : 匹配一个换行符。等价于 \x0a 和 \cJ。
\r : 匹配一个回车符。等价于 \x0d 和 \cM。
\t : 匹配一个制表符。等价于 \x09 和 \cI。
\v : 匹配一个垂直制表符。等价于 \x0b 和 \cK。
test()
search()
replace()
match()
es 函数括号的问题
括号的二义性
1.函数()实际上等于函数的返回值
2.不加括号的,都是把函数名称作为函数的指针,用于传参,此时不是得到函数的结果,因为不会运行函数体代码
模块化
基本模块模式
var moduleName = (function() {
return {
}
})()
一个对象一个用途
避免命名冲突
MessageChannel
柯里化 curry
- 获取柯里化函数的参数个数
- 当传入参数大于柯里化函数时,执行函数;反之,返回柯里化函数,继续获取参数
Promise