js概念

73 阅读3分钟

event loop 事件循环机制 和 DOM 渲染

定义:同步代码会放到调用栈中执行
    当调用栈执行完后,开始Event Loop工作,执行调用队列中
    放到调用栈中执行,一直执行

调用栈
调用队列
    1. 微任务队列(js引擎自带,例:Promise)
    2. 宏任务队列(浏览器或Nodejs环境,例:setTimeout)

DOM渲染
1. 微任务在DOM渲染前
2. 宏任务在DOM渲染后

原型链

三个名次:函数本身(构造函数)、原型对象、实例对象

构造函数有一个原型对象(prototype)
原型对象中有个contrustor指向自身的构造函数
实例有一个指针(__proto__)指向函数的原型对象(prototype)
es6 之前(没有 class)
  • 函数本身就是构造函数
  • 实例化时,将原型对象给到实例对象

闭包:内部函数可以访问外部函数变量;(立即执行函数常用)

Promise

  1. Promise 的三种状态 pending,resolved,rejected
  2. resolved 状态的 Promise 执行 then 方法
  3. rejected 状态的 Promise 执行 catch 方法
  4. catch 不报错,返回的是 resolve 的状态的 Promise

正则

*:0或任意次	+:至少一次	?:01[]:一个字符集合	{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 和 \cKtest() 		// /正则/.test(字符串)	return true/false
search()	// str.search(正则)	返回查询字符位置
replace()	// str.replace(正则, 替换字符串)	替换到匹配到的字符
match()		// str.match(正则)	return true/false

es 函数括号的问题

括号的二义性
1.函数()实际上等于函数的返回值
2.不加括号的,都是把函数名称作为函数的指针,用于传参,此时不是得到函数的结果,因为不会运行函数体代码

模块化

基本模块模式
var moduleName = (function() {
    /* TODO 私有变量、函数 */
    return {
    	// export 的 变量 和 函数(方法)
    }
})()
一个对象一个用途
避免命名冲突

MessageChannel

  • 通道有两个端口,一个端口监听另一个端口发送的数据

柯里化 curry

  • 获取柯里化函数的参数个数
  • 当传入参数大于柯里化函数时,执行函数;反之,返回柯里化函数,继续获取参数

Promise

  • promise 一旦改变状态,状态无法再改变