JS+ES6常用知识点总结

目录

1、js数据类型有哪些

2、内置对象有哪些

3、数组去重几种方式

4、数组深拷贝几种方式

5、对象深拷贝几种方式

 6、定时器有几种,有什么区别

7、说下对Promise的理解

8、说下对模块导入导出的理解

9、箭头函数和普通函数的区别

10、数组排序的几种写法


1、js数据类型有哪些

        JS的数据类型分为:基本类型和引用类型

                基本类型:数字类型(Number)、 字符串类型(String)、 布尔类型(Boolean)、

                                   空型(null)、未定义类型(undefined)、唯一值(Symbol)

                引用类型:数组、函数、对象、set 、map

2、内置对象有哪些

        数学对象:Math

        日期对象:new Date()

        数组对象:new Array()

        字符串对象:new String()

3、数组去重几种方式

(1)ES6中的Set方法:利用其特性:set结构中的成员不能重复

        

(2)includes

        

(3) 双重for循环

        

 

(4)indexOf

        新建一个空的结果数组,for 循环原数组,判断结果数组是否存在当前元素,如果有相同的值则跳过,不相同则push进数组。

        

(5)sort方法

        利用sort()排序方法,然后根据排序后的结果进行遍历及相邻元素比对。

        

(6)Map方法

        创建一个空Map数据结构,遍历需要去重的数组,把数组的每一个元素作为key存到Map中。由于Map中不会出现相同的key值,所以最终得到的就是去重后的结果。

        

4、数组深拷贝几种方式

(1)遍历(仅限于一层,数组的item是基本类型)

let a = [1,2,3,4];
let b = [];
a.forEach(item=>{
   b.push(item)
});
console.log(b);//拷贝后a和b的值相同
a[0] = 5;
console.log(b);//即使改变a的值,b的值也不会发生改变

(2)ES6展开符...(仅限于一层,数组的item是基本类型)

let a = [1,2,3,4]; 
let b = [...a];
console.log(b);
a[0] = 5;
console.log(b);

(3)concat()函数

let a= [1,2,3,4];
let b = a.concat();
console.log(b);
a[0] = 5;
console.log(b);

5、对象深拷贝几种方式

深拷贝:将数据中所有的数据拷贝下来,对拷贝之后的数据进行修改不会影响到原数据

浅拷贝:只是将数据中所有的数据引用下来,依旧指向同一个存放地址,拷贝之后的数据修改之后,也会影响到原数据的中的对象数据

(1)for循环

        

(2)JSON:利用JSON.stringify()以及JSON.parse()

        

(3)扩展运算符

        

 6、定时器有几种,有什么区别

        setTimeout(回调函数,时间):在指定的时间后(单位为毫秒),执行某些代码,

                                                         代码 只会执行一次

  setTimeout(function () {
        console.log('5s 后调用回调函数')
      }, 5000)

        setInterval(回调函数,时间):按照指定的周期(单位为毫秒)来重复执行某些代码,

                                                       定时器不会自动停止,除非调用 clearInterval() 函 数

                                                      手动停止或着关闭浏览器窗口

let timeId = setInterval(function () {
        console.log('1s 调用 1 次回调函数')
      }, 1000)
// 使用clearInterval(timeId) 停止间隔函数

7、说下对Promise的理解

Promise是一个构造函数,可以通过 new Promise()得到一个 Promise 的实例,参数是一个回调函数,该回调函数有两个参数resolve和reject。resolve是成功后的回调函数,reject是失败后的回调函数。

Promise对象有三种状态:

(1)pendding:表示初始状态;

(2)fulfilled:resolve方法调用的时候,表示操作成功;

(3)rejected:reject方法调用的时候,表示操作失败;

      状态只能从pendding---->fulfilled或者pendding---->rejected,不能逆向转换调用promise对象。

(1)promise实例化对象.then(function(res){});

        成功执行then方法,第一个then方法的res是resolve的参数,之后的then方法 中的res是上一个then方法的返回值

(2)promise实例化对象.catch(function(err){});

        成功执行catch方法,err是reject的参数

(3)支持链式调用:一直.then

8、说下对模块导入导出的理解

为解决大型系统的javascript文件经常存在复杂的依赖关系,后期的维护成本会越来越高的问题产生了模块化

导出:选择性地给其他模块暴露(提供)自己的属性和方法,供其他模块使用。

导入:可以根据需要,引入其他模块的提供的属性或者方法,供自己模块使用。

批量导出:export {name,age}

批量导入:import {name,age} from “url”;

整体导入:import * as obj from “url” 变量作为obj的属性

重命名导出的变量:import {旧名字 as 新名字} from “url”;

默认导出:export default 变量 (导出没有名字的变量,只能有一个)

9、箭头函数和普通函数的区别

(1)外形不同:箭头函数更简洁,不需要function,需要在()后加=>

                           如果只有一个参数可以省略(),

                           如果函数只有一个return语句,可以省略return 和 {}

(2)箭头函数全都是匿名函数:普通函数可以有匿名函数,也可以有具名函数

(3)箭头函数不能用于构造函数:普通函数可以用于构造函数,以此创建对象实例。

(4)箭头函数中 this 的指向不同:在普通函数中,this 总是指向调用它的对象,

                                                        如果用作构造函数,它指向创建的对象实例。

(5)箭头函数不具有 arguments 对象:每一个普通函数调用后都具有一个arguments 对象,

                                                                用来存储实际传递的参数。但是箭头函数并没有此对象。

(6)其他区别:箭头函数不具有 prototype 原型对象。

                           箭头函数不具有 super。箭头函数不具有 new.target

10、数组排序的几种写法

(1)利用sort()方法排序
(2)选择排序法:每次找到剩余的最大的或者最小的
(3)冒泡排序法:每次比较两个相邻的数,一次循环能确定一个最大值或者最小值
(4)插入排序法:选定第一个元素,一次扫描后面的元素,放到合适位置

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值