1 Array.prototype.includes()方法
includes()
用于查找一个值是否在数组中,如果在返回true
,否则返回false
。
['a', 'b', 'c'].includes('a'); // true
['a', 'b', 'c'].includes('d'); // false
includes()
方法接收两个参数,搜索的内容和开始搜索的索引,默认值为0,若搜索值在数组中则返回true
否则返回false
。
['a', 'b', 'c', 'd'].includes('b'); // true
['a', 'b', 'c', 'd'].includes('b', 1); // true
['a', 'b', 'c', 'd'].includes('b', 2); // false
与indexOf
方法对比,下面方法效果相同:
['a', 'b', 'c', 'd'].indexOf('b') > -1; // true
['a', 'b', 'c', 'd'].includes('b'); // true
includes()与indexOf对比:
includes
相比indexOf
更具语义化,includes
返回的是是否存在的具体结果,值为布尔值,而indexOf
返回的是搜索值的下标。includes
相比indexOf
更准确,includes
认为两个NaN
相等,而indexOf
不会。
let a = [1, NaN, 3];
a.indexOf(NaN); // -1
a.includes(NaN); // true
另外在判断+0
与-0
时,includes
和indexOf
的返回相同。
[1, +0, 3, 4].includes(-0); // true
[1, +0, 3, 4].indexOf(-0); // 1
2 指数操作符(**)
基本用法:
let a = 3 ** 2 ; // 9
// 等效于
Math.pow(3, 2); // 9
**
是一个运算符,也可以满足类似假发的操作,如下:
let a = 3;
a **= 2; // 9