• 深拷贝浅拷贝
  • js数据类型
  • es6语法
  • let var const
  • vue 生命周期
  • 网页渲染过程
  • 两个数组拼接成一个数组的所有方法

js数据类型
1、五大基本数据类型
undefined,null,string,number,Boolean
2、复杂数据类型
object

vue生命周期函数

  1. beforecreate()初始化vue实例

  2. created()
    此时data属性已和数据绑定,也是最早ajax请求数据的地方
    在页面还没渲染出来时就调用的函数,一般用来在页面渲染出来之前获取整个页面的数据

  3. beforeMoute()

  4. mounted()数据挂载

  5. beforeUpdate()

  6. updated()当data中数据发生变化,组件将会重新渲染

  7. beforeDestory()

  8. destoryed()实例销毁后,所有绑定指示的值及监听器等都将被销毁

const let var 的区别
var:

  1. 可以多次声明
  2. var定义的变量属于全局变量,存在变量提升
    const、let差不多,他们不存在变量提升

let :

  1. 在同一作用域内只能定义一次,
  2. 不存在变量提升,一次在定义之前使用会报referenceError的错误,因此在使用之前一定要先定义。
  3. (暂时性死区:一个作用域内存在let,那么从这个作用域开始,直至let定义变量那行,都是暂时性死区,在这个区域内let定义的变量无法使用)

const 和 let的异同:
相同:都是只在声明的块级作用域内生效
不同: let声明的变量后期值和类型都可以改变,没有限制
const一旦声明值和类型都无法改变,即一开始声明变量就得立即赋值初始化他,const声明常量多。

const a;
a = 10; //这种就只有let可以,const会报错

深拷贝和浅拷贝
浅拷贝: 复制基本类型的属性,引用类型的属性,复制栈中的变量 和变量指向堆内存中的对象的指针,不复制堆内存中的对象。

深拷贝: 复制基本类型的属性,引用类型的属性,复制栈中的变量和变量指向堆内存的指针,复制堆内存中的对象

网页渲染过程

  1. 获取HTML文件,并解析成DOM模型(文档对象模型)
  2. 将css文件用css解析器解释成内部表示,形成css对象模型
  3. 将DOM模型与css对象模型合并。在DOM树上附加样式信息,生成RenderObject树
  4. RenderObject节点在创建的同时,webkit会根据网页层次结构构建RenderLayer树,同时构建一个虚拟绘图上下文。
  5. 布局(layout)和绘制

数组的方法
array.map() 遍历数组每个元素,但不改变数组
array.pop() 删除数组中最后一个元素并返回数组,

let amm = [1,2,3,4,5]
amm.pop()
console(amm) //此处数组amm = [1,2,3,4]

array.splice(开始位置,删除个数,删除元素) 删除数组的元素

let amm = [1,2,3,4]
let a = amm.splice(0,1) // a = [2,3,4]
let b = amm.splice(1, 0, "abc") // b = [1,abc,2,3,4] 不删除元素反而新增一个
let c = amm.splice(1, 1, "abc") // c = [1,abc,3,4] 不存在的被删除的元素反而替代删除的那个

array.slice(开始位置,结束位置)返回数组中元素从开始位置到结束位置

array.shift() 删除数组的第一个元素,并返回数组

let amm = [1,2,3,4]
amm.shift()
console.log(amm) // amm = [2,3,4]

array.unshift() 将一个或多个元素添加到数组的开头

let amm = [1,2,3,4]
amm.unshift(6,7)
console.log(amm) //amm = [6,7,1,2,3,4]

array.isArray() 判断是否是数组,返回布尔值Boolean

array.toString() 将数组转换为字符串

let amm = [1,2,3,4]
amm.toString()
console.log(amm) //1,2,3,4

array.join()将数组转换为字符串

let array = [3,4,5,6]
let a = array.join(,)
let b = array.join(&)
let c = array.join()
console.log(a) //3,4,5,6
console.log(b) //3&4&5&6
console.log(c) //3456

array.concat() 数组拼接

let amm1 = [1,2]
let amm2 = [3,4]
let a = amm1.concat(amm2) //a = [1,2,3,4]

array.push() 在数组末尾添加元素
array.reduce()
array.every()如果每个元素都满足这个条件返回true,否则true
array.some()

  • 重绘重排(重绘不一定需要重排,重排必然导致重绘)

  • 重绘:是一个元素的外观被改变所触发的浏览器行为,浏览器会根据元素的新属性重新绘制,使元素呈现新的外观

  • 重排:当渲染树的一部分必须更新,并且节点的尺寸发生了变化,浏览器会使树中受到影响的部分失效,并且重新构造渲染树
    1、添加、删除可见的dom
    2、元素的位置改变
    3、元素的尺寸的改变(外边距,内边距、边框厚度、宽高等几何属性)
    4、页面的渲染初始化
    5、浏览器窗口尺寸改变

  • 减少reflow 重排,repaint 重绘
    1、不要一条一条的修改DOM的样式,可先定义好css的class,然后修改DOM的className, 动态绑定classname
    2、不要把DOM节点的属性值放在一个循环里面当成循环里面的变量
    3、为动画的HTML元件适用fixed 或absolute 的position,那么修改他们的css是不会reflow

Logo

前往低代码交流专区

更多推荐