1 let \cont
2 结构
let [a,b,c] = [1,2,3]
let [a,[b,c]]=[1,[2,3]]
let [a, ,c] =[1,2,3]
let [a, b, c, d, e] = 'hello';
3 Symbol
表示独一无二的值,最大的用法是用来定义对象的唯一属性名除了 Number 、 String 、 Boolean 、 Objec t、 null 和 undefined ,还新增了 Symbol 。
*Symbol.for()
Symbol.for() 类似单例模式,首先会在全局搜索被登记的 Symbol 中是否有该字符串参数作为名称的 Symbol 值,如果有即返回该 Symbol 值,若没有则新建并返回一个以该字符串参数为名称的 Symbol 值,并登记在全局环境中供搜索。
4 Map 与 Set
/***Maps 和 Objects 的区别***/
一个 Object 的键只能是字符串或者 Symbols,但一个 Map 的键可以是任意值。
Map 中的键值是有序的(FIFO 原则),而添加到对象中的键则不是。
Map 的键值对个数可以从 size 属性获取,而 Object 的键值对个数只能手动计算。
Object 都有自己的原型,原型链上的键名有可能和你自己在对象上的设置的键名产生冲突。
/**Set 对象**/
Set 对象允许你存储任何类型的唯一值,无论是原始值或者是对象引用。
Set 中的特殊值
Set 对象存储的值总是唯一的,所以需要判断两个值是否恒等。有几个特殊值需要特殊对待:
+0 与 -0 在存储判断唯一性的时候是恒等的,所以不重复;
undefined 与 undefined 是恒等的,所以不重复;
NaN 与 NaN 是不恒等的,但是在 Set 中只能存一个,不重复。
5 Reflect 与 Proxy
Proxy 与 Reflect 是 ES6 为了操作对象引入的 API 。
Proxy 可以对目标对象的读取、函数调用等操作进行拦截,然后进行操作处理。它不直接操作对象,而是像代理模式,通过对象的代理对象进行操作,在进行这些操作时,可以添加一些需要的额外操作。
Reflect 可以用于获取目标对象的行为,它与 Object 类似,但是更易读,为操作对象提供了一种更优雅的方式。它的方法与 Proxy 是对应的。
6 字符串
·ES6 之前判断字符串是否包含子串,用 indexOf 方法,ES6 新增了子串的识别方法。
·includes():返回布尔值,判断是否找到参数字符串。
·startsWith():返回布尔值,判断参数字符串是否在原字符串的头部。
·endsWith():返回布尔值,判断参数字符串是否在原字符串的尾部。
以上三个方法都可以接受两个参数,需要搜索的字符串,和可选的搜索起始位置索引。
let string = "apple,banana,orange";
string.includes("banana"); // true
string.startsWith("apple"); // true
string.endsWith("apple"); // false
string.startsWith("banana",6) // true
·repeat():返回新的字符串,表示将字符串重复指定次数返回如果参数是小数,向下取整
console.log("Hello,".repeat(2)); // "Hello,Hello,"
·padStart:返回新的字符串,表示用参数字符串从头部(左侧)补全原字符串。
·padEnd:返回新的字符串,表示用参数字符串从尾部(右侧)补全原字符串。
console.log("h".padStart(5,"o")); // "ooooh"
console.log("h".padEnd(5,"o")); // "hoooo"
console.log("h".padStart(5)); // " h"
如果指定的长度小于或者等于原字符串的长度,则返回原字符串:
如果原字符串加上补全字符串长度大于指定长度,则截去超出位数的补全字符串:
变量名写在 ${} 中,${} 中可以放入 JavaScript 表达式。
let name = "Mike";
let age = 27;
let info = `My Name is ${name},I am ${age+1} years old next year.`
console.log(info);
// My Name is Mike,I am 28 years old next year.
7 数值
·二进制表示法新写法: 前缀 0b 或 0B 。
console.log(0b11 === 3); // true
console.log(0B11 === 3); // true
·八进制表示法新写法: 前缀 0o 或 0O 。
console.log(0o11 === 9); // true
console.log(0O11 === 9); // true
·Number.EPSILON
Number.EPSILON 属性表示 1 与大于 1 的最小浮点数之间的差它的值接近于 2.2204460492503130808472633361816E-16,或者 2-52。
·Number.isFinite()
用于检查一个数值是否为有限的( finite ),即不是 Infinity
·Number.parseInt()
用于将给定字符串转化为指定进制的整数。
// 不指定进制时默认为 10 进制
Number.parseInt('12.34'); // 12
// 指定进制
Number.parseInt('0011',2); // 3
·Math.cbrt()
用于计算一个数的立方根。
Math.cbrt(1); // 1
·Math.imul()
两个数以 32 位带符号整数形式相乘的结果,返回的也是一个 32 位的带符号整数。
// 大多数情况下,结果与 a * b 相同
Math.imul(1, 2); // 2
·Math.hypot()
用于计算所有参数的平方和的平方根。
Math.hypot(3, 4); // 5
·Math.trunc()
用于返回数字的整数部分。
Math.trunc(12.3); // 12
·Math.sign()
判断数字的符号(正、负、0)。
·Math.expm1()对数
用于计算 e 的 x 次方减 1 的结果,即 Math.exp(x) - 1 。
Math.expm1(1); // 1.718281828459045
·Math.log10(x)
用于计算以 10 为底的 x 的对数。
Math.log10(1); // 0
·Math.log2()
用于计算 2 为底的 x 的对数。
Math.log2(1); // 0
·Math.sinh(x): 用于计算双曲正弦。
·Math.cosh(x): 用于计算双曲余弦。
·Math.tanh(x): 用于计算双曲正切。
·Math.asinh(x): 用于计算反双曲正弦。
·Math.acosh(x): 用于计算反双曲余弦。
·Math.atanh(x): 用于计算反双曲正切。
8 数组
·Array.of()
将参数中所有值作为元素形成数组。
console.log(Array.of(1, 2, 3, 4)); // [1, 2, 3, 4]
·Array.from()
将类数组对象或可迭代对象转化为数组。
// 参数为数组,返回与原数组一样的数组
console.log(Array.from([1, 2])); // [1, 2]
·find()
查找数组中符合条件的元素,若有多个符合条件的元素,则返回第一个元素。
let arr = Array.of(1, 2, 3, 4);
console.log(arr.find(item => item > 2)); // 3
·findIndex()
查找数组中符合条件的元素索引,若有多个符合条件的元素,则返回第一个元素索引。
let arr = Array.of(1, 2, 1, 3);
// 参数1:回调函数
// 参数2(可选):指定回调函数中的 this 值
console.log(arr.findIndex(item => item = 1)); //
·fill()
将一定范围索引的数组元素内容填充为单个指定的值。
let arr = Array.of(1, 2, 3, 4);
// 参数1:用来填充的值
// 参数2:被填充的起始索引
// 参数3(可选):被填充的结束索引,默认为数组末尾
console.log(arr.fill(0,1,2)); // [1, 0, 3, 4]
·copyWithin()
将一定范围索引的数组元素修改为此数组另一指定范围索引的元素。
// 参数1:被修改的起始索引
// 参数2:被用来覆盖的数据的起始索引
// 参数3(可选):被用来覆盖的数据的结束索引,默认为数组末尾
console.log([1, 2, 3, 4].copyWithin(0,2,4)); // [3, 4, 3, 4]
·includes()
数组是否包含指定值。
注意:与 Set 和 Map 的 has 方法区分;Set 的 has 方法用于查找值;Map 的 has 方法用于查找键名。
·flat()
console.log([1 ,[2, 3]].flat()); // [1, 2, 3]
// 指定转换的嵌套层数
console.log([1, [2, [3, [4, 5]]]].flat(2)); // [1, 2, 3, [4, 5]]
网友评论