类型错误:替换不是 JavaScript 中的函数

TypeError: replace 不是 JavaScript 中的函数

TypeError: replace is not a function in JavaScript

“TypeError: replace is not a function”错误发生在我们
replace()对一个非 type 的值调用方法时string

解决方法是将该值转为字符串,或者string在调用replace()方法前检查该值是否为type。

替换不是函数

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

索引.js
const num = 10; // ⛔️ Uncaught TypeError: num.replace is not a function const result = num.replace(/[0-9]/g, '-')

我们在数字上调用了
String.replace()
方法,因此发生了错误。

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

replace()要解决该错误,请在调用该方法之前将数字转换为字符串

索引.js
const num = 10; // ✅ call toString() first const result = num.toString().replace(/[0-9]/g, '-'); console.log(result); // 👉️ "--"

我们toString()在调用之前使用该方法将数字转换为字符串
replace()

您还可以使用String()构造函数将值转换为字符串。

索引.js
const num = 10; const result = String(num).replace(/[0-9]/g, '-'); console.log(result); // 👉️ "--"

构造函数返回所提供对象的String()字符串表示形式。

string在调用之前检查该值是否为 a replace()

replace()或者,您可以在调用方法之前有条件地检查值是否为字符串。

索引.js
const num = 12345; const result = typeof num === 'string' ? num.replace(/[0-9]/g, '-') : ''; console.log(result); // 👉️ ""

我们使用三元运算符来检查num变量是否存储字符串。

如果是,则返回逗号左侧的值,否则返回右侧的值。

您还可以使用一个简单的if语句来检查该值是否属于 type
string

索引.js
const num = 12345; let result = ''; if (typeof num === 'string') { result = num.replace(/[0-9]/g, '-'); } console.log(result); // 👉️ ""
如果值是一个字符串,我们返回调用该方法的结果,否则,我们返回一个空字符串以保持一致。 replace

如果错误仍然存​​在,请检查console.log您调用replace
方法的值并使用
typeof运算符检查其类型。

如果该值是一个对象,则很有可能您忘记访问需要调用replace()方法的特定属性。

索引.js
const obj = { name: 'bobby', }; const result = obj.name.replace(/bo/, 'abc'); console.log(result); // 👉️ abcbby

该对象有一个name字符串类型的属性,所以我们必须先访问该属性才能使用该String.replace()方法。

String.replace()
方法返回一个新字符串,其中一个、一些或所有正则表达式的匹配项被替换为提供的替换项

该方法采用以下参数:

姓名 描述
图案 要在字符串中查找的模式。可以是字符串或正则表达式。
替换 用于通过提供的模式替换子字符串匹配的字符串。

String.replace()方法返回一个新字符串,其中替换了模式的匹配项。该方法不会更改原始字符串。

字符串在 JavaScript 中是不可变的。

索引.js
const num = 42; const result = String(num).replace('4', 'four'); console.log(result); // 👉️ 'four2'

结论

“TypeError: replace is not a function”错误发生在我们
replace()对一个非 type 的值调用方法时string

string解决方法是将值转为字符串,或者在调用方法前检查值是否为类型replace()