ES6新特性

2022-08-08  本文已影响0人  海贼王Lorrin

面试遇到了,当时没反应过来,后来一查,哦,就这,我不是天天用吗,下面我整理分享给大家,切记牢记“有时候会用不一定能回答出来”

https://www.runoob.com/w3cnote/es6-tutorial.html

1、const 和 let

const定义变量必须赋值,且不能更改

let 代码块内有效,没有变量声明提升

暂时性死区: let或const在 {}中定义,外部有同样的名称的变量,会优先取{}内定义的,如果在定义前使用,会报错Cannot access '变量名' before initialization

2、箭头函数,便于阅读,箭头函数内部this默认指向window,实际调用了.bind(this)

3、模板字符串`${1+2+3}`  可以任意拼接字符和变量

4、默认参数,定义函数可以设置默认参数

function aa(type = 1){ ..... }

5、解构赋值,const {foo, bar} = {foo: 'aaaa', bar: 'bbbb'}

6、import 和 export

7、promise,异步解决方案,js是单线程的,.then(), .catch()方法继续执行和捕获异常中断

8、扩展符…

①能收集形参 ...args 到一个数组内,替代arguments

②解构数组

③合并并浅拷贝数组

9、解构模型

let [a, b, c] = [1, 2, 3];// a = 1// b = 2// c = 3

剩余运算符

let [a, ...b] = [1, 2, 3];//a = 1//b = [2, 3]

10、calss定义类

11、新的数据类型Symbol

每一个 Symbol 的值都是不相等的,所以 Symbol 作为对象的属性名,可以保证属性不重名。

12、Map 对象

Map 对象保存键值对。任何值(对象或者原始值) 都可以作为一个键或一个值。

// 将会显示两个 log。 一个是 "0 = zero" 另一个是 "1 = one"

for (var [key, value] of myMap) {  console.log(key + " = " + value);}

// 将会显示两个 logs。 一个是 "0 = zero" 另一个是 "1 = one"

myMap.forEach(function(value, key) { console.log(key + " = " + value);}, myMap)

13、Set 对象

Set 对象允许你存储任何类型的唯一值,无论是原始值或者是对象引用。

作用:数组去重var mySet = new Set([1, 2, 3, 4, 4]);[...mySet]; // [1, 2, 3, 4]

14、Reflect 与 Proxy

15、拓展的方法子串的识别

includes():返回布尔值,判断是否找到参数字符串。

startsWith():返回布尔值,判断参数字符串是否在原字符串的头部。

endsWith():返回布尔值,判断参数字符串是否在原字符串的尾部。

let string = "apple,banana,orange";string.includes("banana"); // truestring.startsWith("apple"); // truestring.endsWith("apple"); // falsestring.startsWith("banana",6) // true

16、字符串重复respeat

repeat():返回新的字符串,表示将字符串重复指定次数返回。

console.log("Hello,".repeat(2));  // "Hello,Hello,"

如果参数是小数,向下取整

console.log("Hello,".repeat(3.2));  // "Hello,Hello,Hello,"

如果参数是 0 至 -1 之间的小数,会进行取整运算,0 至 -1 之间的小数取整得到 -0 ,等同于 repeat 零次

console.log("Hello,".repeat(-0.5));  // ""

如果参数是 NaN,等同于 repeat 零次

console.log("Hello,".repeat(NaN));  // ""

如果参数是负数或者 Infinity ,会报错:

console.log("Hello,".repeat(-1));  // RangeError: Invalid count valueconsole.log("Hello,".repeat(Infinity));  // RangeError: Invalid count value

如果传入的参数是字符串,则会先将字符串转化为数字

console.log("Hello,".repeat("hh")); // ""console.log("Hello,".repeat("2"));  // "Hello,Hello,"

16、字符串补全

padStart:返回新的字符串,表示用参数字符串从头部(左侧)补全原字符串。

padEnd:返回新的字符串,表示用参数字符串从尾部(右侧)补全原字符串。

以上两个方法接受两个参数,第一个参数是指定生成的字符串的最小长度,第二个参数是用来补全的字符串。如果没有指定第二个参数,默认用空格填充。

console.log("h".padStart(5,"o"));  // "ooooh"console.log("h".padEnd(5,"o"));    // "hoooo"console.log("h".padStart(5));      // "    h"

如果指定的长度小于或者等于原字符串的长度,则返回原字符串:

console.log("hello".padStart(5,"A"));  // "hello"

如果原字符串加上补全字符串长度大于指定长度,则截去超出位数的补全字符串:

console.log("hello".padEnd(10,",world!"));  // "hello,worl"

常用于补全位数:

console.log("123".padStart(10,"0"));  // "0000000123"

17、数值表示新方法

18、新增Math函数方法

Math.trunc 用于返回数字的整数部分

Math.hypot 用于计算所有参数的平方和的平方根

Math.cbrt 用于计算一个数的立方根。

双曲函数方法

Math.sinh(x): 用于计算双曲正弦。

Math.cosh(x): 用于计算双曲余弦。

Math.tanh(x): 用于计算双曲正切。

Math.asinh(x): 用于计算反双曲正弦。

Math.acosh(x): 用于计算反双曲余弦。

Math.atanh(x): 用于计算反双曲正切。

19、对象字面量

  属性的简洁表示法

20、对象的新方法

Object.assign(target, source_1, ···)

数组的处理

Object.assign([2,3], [5]);  // [5,3]

同名属性替换

targetObj = { a: { b: 1, c:2}};sourceObj = { a: { b: "hh"}};Object.assign(targetObj, sourceObj);targetObj;  // {a: {b: "hh"}}

21、数组创建

Array.of()

将参数中所有值作为元素形成数组。

22、keys() 遍历键名

23、函数参数扩展

24、as 的用法  不同模块导出接口名称命名重复, 使用 as 重新定义变量名。

25、export default 命令

在一个文件或模块中,export、import 可以有多个,export default 仅有一个。

export default 中的 default 是对应的导出接口变量。

通过 export 方式导出,在导入时要加{ },export default 则不需要。

export default 向外暴露的成员,可以使用任意变量来接收。

具体的可以参考ES6新特性表单仔细阅读

上一篇下一篇

猜你喜欢

热点阅读