TypeError: includes 不是 JavaScript 中的函数
TypeError: includes is not a function in JavaScript
includes()
当对非字符串或数组类型的值调用该方法时,会发生“TypeError: includes is not a function”错误。
要解决此错误,请在调用该方法之前将值转换为字符串或数组,或者确保仅对includes()
字符串或数组调用该方法。
下面是错误如何发生的示例。
const str = 1234; // ⛔️ Uncaught TypeError: str.includes is not a function const result = str.includes('3');
我们includes
在导致错误的数字上调用了该方法。
在使用#之前将值转换为字符串或数组includes()
要解决此错误,请在调用方法之前将值转换为字符串或数组,或者仅在值的类型正确时才调用方法。
// ✅ Convert to a String before using includes() const num = 1234; const result1 = String(num).includes('3'); console.log(result1); // 👉️ true if (result1) { console.log('is contained'); } else { console.log('is NOT contained'); } // ---------------------------------------------------- // ✅ Convert to an Array before using includes() const set = new Set(['a', 'b', 'c']); const result2 = Array.from(set).includes('b'); console.log(result2); // 👉️ true if (result2) { console.log('is contained'); } else { console.log('is not contained'); }
第一个示例在使用该方法String()
之前使用构造函数将值转换为字符串。includes()
在第二个例子中,我们在使用方法之前使用Array.from()
方法将a转换Set
为数组includes()
。
在使用#之前有条件地检查值是否为数组includes()
includes
或者,您可以在调用方法之前有条件地检查值的类型是否正确。
// ✅ check if the value is a String before using includes() const num = 1234; const result1 = typeof num === 'string' ? num.includes('3') : false; console.log(result1); // 👉️ false // -------------------------------------------- // ✅ check if the value is an Array before using includes() const set = new Set(['a', 'b', 'c']); const result2 = Array.isArray(set) ? set.includes('b') : false; console.log(result2); // 👉️ false
if/else
我们使用了与语句非常相似的三元运算符。
您也可以使用简单的if
语句来获得相同的结果。
// ✅ check if the value is a String before using includes() const num = 1234; let result1 = false; if (typeof num === 'string') { result1 = num.includes('3'); console.log(result1); } console.log(result1); // 👉️ false // -------------------------------------------- // ✅ check if the value is an Array before using includes() const set = new Set(['a', 'b', 'c']); let result2 = false; if (Array.isArray(set)) { result2 = set.includes('b'); } console.log(result2); // 👉️ false
在第一个示例中,我们检查值是否为字符串类型。如果是,我们返回调用该includes()
方法的结果,否则,我们返回
false
。
在第二个示例中,我们使用 方法检查值是否为数组
Array.isArray()
。
如果值是一个数组,我们返回调用该includes
方法的结果,否则,我们返回false
。
console.log
请检查您调用该方法的值,并确保它是字符串类型或数组类型。 includes
如果您有一个对象,您很有可能必须访问具有字符串或数组值的对象的特定属性。
const obj = { site: ['bobby', 'hadz', 'com'], }; console.log(obj.site.includes('bobby')); // 👉️ true
我们有一个具有site
数组值属性的对象,因此我们必须在调用includes()
方法之前访问该属性。
结论
includes()
当对非字符串或数组类型的值调用该方法时,会发生“includes is not a function”错误。
要解决此错误,请在调用该方法之前将值转换为字符串或数组,或者确保仅对includes
字符串或数组调用该方法。