TypeError: includes 不是 JavaScript 中的函数

TypeError: includes 不是 JavaScript 中的函数

TypeError: includes is not a function in JavaScript

includes()
当对非字符串或数组类型的值调用
该方法时,会发生“TypeError: includes is not a function”错误。

要解决此错误,请在调用该方法之前将值转换为字符串或数组,或者确保仅对includes()字符串或数组调用该方法。

typeerror includes 不是一个函数

下面是错误如何发生的示例。

索引.js
const str = 1234; // ⛔️ Uncaught TypeError: str.includes is not a function const result = str.includes('3');

我们includes在导致错误的数字上调用了该方法。

includes()方法仅适用于
字符串

数组

在使用#之前将值转换为字符串或数组includes()

要解决此错误,请在调用方法之前将值转换为字符串或数组,或者仅在值的类型正确时才调用方法。

索引.js
// ✅ 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或者,您可以在调用方法之前有条件地检查值的类型是否正确。

索引.js
// ✅ 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语句来获得相同的结果。

索引.js
// ✅ 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

如果您有一个对象,您很有可能必须访问具有字符串或数组值的对象的特定属性。

索引.js
const obj = { site: ['bobby', 'hadz', 'com'], }; console.log(obj.site.includes('bobby')); // 👉️ true

我们有一个具有site数组值属性的对象,因此我们必须在调用includes()方法之前访问该属性。

结论

includes()当对非字符串或数组类型的值调用该方法时,会发生“includes is not a function”错误。

要解决此错误,请在调用该方法之前将值转换为字符串或数组,或者确保仅对includes字符串或数组调用该方法。