ES6新特性
面试遇到了,当时没反应过来,后来一查,哦,就这,我不是天天用吗,下面我整理分享给大家,切记牢记“有时候会用不一定能回答出来”
https://www.runoob.com/w3cnote/es6-tutorial.html1、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新特性表单仔细阅读