在使用 ECMAScript 2017 中的 Array.includes() 方法时遇到的 TypeError 错误
ECMAScript 2017 中的 Array.includes() 方法是一个非常有用的方法,它可以用来判断一个数组是否包含某个元素。这个方法非常简单易用,只需要传入一个参数,它会返回一个布尔值,表示数组中是否包含这个元素。但是,在使用这个方法时,我们有可能会遇到 TypeError 错误。
TypeError 错误通常表示我们在使用方法时传入了错误的参数类型,或者方法本身不支持我们传入的参数类型。在使用 Array.includes() 方法时,我们需要注意以下几点:
- 参数类型必须与数组元素类型一致
Array.includes() 方法的参数类型必须与数组元素类型一致,否则会报 TypeError 错误。例如,如果数组中的元素是字符串类型,我们传入一个数字类型的参数,就会报错。
示例代码:
const arr = ['apple', 'banana', 'orange']; console.log(arr.includes(1)); // TypeError: Array includes value not string
- 对象类型的参数必须与数组元素的引用相同
如果数组中的元素是对象类型,我们传入一个与数组元素引用不同的对象,也会报 TypeError 错误。这是因为 Array.includes() 方法是通过比较对象的引用来判断数组中是否包含这个对象的,如果引用不同,就会返回 false。
示例代码:
const obj1 = {name: 'Tom'}; const obj2 = {name: 'Tom'}; const arr = [obj1]; console.log(arr.includes(obj2)); // false
- Array.includes() 方法不支持传入第二个参数
Array.includes() 方法只支持传入一个参数,如果我们传入了第二个参数,就会报 TypeError 错误。
示例代码:
const arr = ['apple', 'banana', 'orange']; console.log(arr.includes('apple', 1)); // TypeError: 2nd argument to Array.includes must be undefined
如果我们遵循以上三点注意事项,就可以避免在使用 Array.includes() 方法时遇到 TypeError 错误。
总结
在使用 ECMAScript 2017 中的 Array.includes() 方法时,我们需要注意参数类型与数组元素类型的一致性,以及对象类型的参数必须与数组元素的引用相同。此外,Array.includes() 方法不支持传入第二个参数。遵循以上注意事项,我们就可以避免在使用 Array.includes() 方法时遇到 TypeError 错误。
参考代码:
const arr = ['apple', 'banana', 'orange']; console.log(arr.includes('apple')); // true const obj1 = {name: 'Tom'}; const obj2 = {name: 'Tom'}; const arr2 = [obj1]; console.log(arr2.includes(obj2)); // false console.log(arr2.includes(obj1)); // true
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/65161e6795b1f8cacde74a24