JS的简单数据类型和复杂类型(引用类型)、Javascript 中的垃圾回收机制、JS性能优化的方式有哪些、 展开运算符(...)、AJAX 请求数据步骤 (Date 2023/1/3)

一、JS的简单数据类型和复杂类型(引用类型)

文章链接:http://t.csdn.cn/2LjGe

 二、Javascript 中的垃圾回收机制 

1)JS中内存的分配和回收都是自动完成的,内存在不使用的时候会被垃圾回收器自动回收。

2)内存的生命周期:

  1. 内存分配:当我们声明变量、函数、对象的时候,系统会自动为他们分配内存
  2. 内存使用:即读写内存,也就是使用变量、函数等
  3. 内存回收:使用完毕,由垃圾回收自动回收不再使用的内存

说明: 

  • 全局变量一般不会回收(关闭页面回收);
  • 一般情况下局部变量的值, 不用了, 会被自动回收掉

2)什么是内存泄漏?

不再用到的内存,没有及时释放,就叫做内存泄漏

3)垃圾回收算法

垃圾回收, 核心思想就是如何判断内存是否已经不再会被使用了, 如果是, 就视为垃圾, 释放掉 下面介绍两种常见的浏览器垃圾回收算法: 引用计数法 标记清除法

引用计数法

const person = {
age: 23,
name: '稼轩'
}
const p = person
person = 1
p = null

由上面可以看出,引用计数算法是个简单有效的算法。 但它却存在一个致命的问题:嵌套引用。 如果两个对象相互引用,尽管他们已不再使用,垃圾回收器不会进行回收,导致内存泄露。

所以现代的浏览器已经不再使用引用计数算法了。

 标记清除法:  

function fn() {
let o1 = {}
let o2 = {}
o1.a = o2
o2.a = o1
return '引用计数无法回收'
}
fn()

不在使用的对象被标记为不再使用,稍后进行回收。

JS垃圾回收机制 主要为 闭包  做铺垫

三、JS性能优化的方式有哪些

1.减少大量DOM操作

2.减少声明及语句数 

3.减少循环体中活动

4.事件委托

5.图片懒加载

6.慎用全局变量

7.通过原型增加方法

// before
const fn = function(){
    this.foo = function(){}
}
// after
const fn = function(){}
fn.prototype.foo = function(){}

.........

四、展开运算符

展开运算符(…),将一个数组进行展开

  • 不会修改原数组
  • 典型运用场景: 求数组最大值(最小值)、合并数组等
求数组最值
const arr = [1,6,3,4]
consloe.log(Math.max(..arr))//6
consloe.log(Math.min(..arr))//1

合并数组
const arr1 = [1,2,3]
const arr2 = [4,5,6]
const merge = [...arr1,...arr2]
consloe.log(merge) // [1,2,3,4,5,6]

五、AJAX 请求数据步骤是什么?传输的数据是用的 get 还是post?

AJAX 请求数据步骤:

1.创建XMLHttpRequest异步对象

2.设置回调函数

3.使用open方法与服务器建立连接

4.向服务器发送数据

5.在回调函数中对不同的响应状态进行处理

传输的数据是用的 get 还是post?

get请求是从指定的资源请求数据,get请求基本上用于从服务器获得(取回)数据。注释:GET 方法可能返回缓存数据。
post请求是向指定的资源提交要处理的数据,post请求也可用于从服务器获取数据。不过,post方法不会缓存数据,并且常用于连同请求一起发送数据

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值