类型错误:子字符串不是 JavaScript 中的函数

TypeError: substring 不是 JavaScript 中的函数

TypeError: substring is not a function in JavaScript

当对substring()
不是
string.

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

typeerror substring 不是一个函数

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

索引.js
const str = 123456; // ⛔️ Uncaught TypeError: str.substring is not a function const result = str.substring(0, 3);

我们对导致错误的类型的值调用了
String.substring()
方法。
number

在调用之前将值转换为字符串substring()

我们可以在调用substring()方法解决错误之前将值转换为字符串。

索引.js
const value = 123456; // ✅ Works const result = String(value).substring(0, 3); console.log(result); // 👉️ "123"

如果您知道该值可以转换为有效的字符串,请
String()在调用该String.substring()方法之前使用构造函数。

在调用之前检查值是否为字符串类型substring()

substring或者,您可以在调用该方法之前检查该值是否具有字符串类型。

索引.js
const str = null; const result = typeof str === 'string' ? str.substring(0, 3) : ''; console.log(result); // 👉️ ""

if/else我们使用了三元运算符,它与语句非常相似。

如果问号左侧的表达式计算结果为真值,则运算符返回冒号左侧的值,否则返回右侧的值。

您也可以使用简单的if语句来获得相同的结果。

索引.js
const str = null; let result = ''; if (typeof str === 'string') { result = str.substring(0, 3); } console.log(result); // 👉️ ""

我们检查str变量是否存储字符串。如果是,我们返回调用该substring方法的结果,否则,我们返回一个空字符串。

如果错误仍然存​​在,console.log请检查您调用该方法的值并确保它是一个有效的字符串。 substring()

如果该值是一个对象或数组,您可能应该在调用该
substring()方法之前访问特定的对象属性或特定的数组索引。

索引.js
// ✅ with objects const obj = { name: 'bobbyhadz.com', }; const str1 = obj.name.substring(0, 3); console.log(str1); // 👉️ bob // -------------------------------------- // ✅ with arrays const arr = ['bobby', 'hadz', 'com']; const str2 = arr[0].substring(0, 3); console.log(str2); // 👉️ bob

在调用方法之前,我们访问了name对象的属性和第一个数组元素。String.substring()

String.substring()
方法返回从开始索引到排除结束索引的字符串片段

该方法采用以下参数:

姓名 描述
起始索引 要包含在返回的子字符串中的第一个字符的索引
结束索引 要从返回的子字符串中排除的第一个字符的索引

如果未end指定索引,则切片将转到字符串的末尾。

结论

当对substring()
不是
string.

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