TypeError: replace 不是 JavaScript 中的函数
TypeError: replace is not a function in JavaScript
“TypeError: replace is not a function”错误发生在我们
replace()
对一个非 type 的值调用方法时string
。
解决方法是将该值转为字符串,或者string
在调用replace()
方法前检查该值是否为type。
下面是错误如何发生的示例。
const num = 10; // ⛔️ Uncaught TypeError: num.replace is not a function const result = num.replace(/[0-9]/g, '-')
我们在数字上调用了
String.replace()
方法,因此发生了错误。
在调用之前将值转换为字符串replace()
replace()
要解决该错误,请在调用该方法之前将数字转换为字符串
。
const num = 10; // ✅ call toString() first const result = num.toString().replace(/[0-9]/g, '-'); console.log(result); // 👉️ "--"
我们toString()
在调用之前使用该方法将数字转换为字符串
replace()
。
您还可以使用String()
构造函数将值转换为字符串。
const num = 10; const result = String(num).replace(/[0-9]/g, '-'); console.log(result); // 👉️ "--"
构造函数返回所提供对象的String()
字符串表示形式。
string
在调用之前检查该值是否为 a replace()
replace()
或者,您可以在调用方法之前有条件地检查值是否为字符串。
const num = 12345; const result = typeof num === 'string' ? num.replace(/[0-9]/g, '-') : ''; console.log(result); // 👉️ ""
我们使用三元运算符来检查num
变量是否存储字符串。
如果是,则返回逗号左侧的值,否则返回右侧的值。
您还可以使用一个简单的if
语句来检查该值是否属于 type
string
。
const num = 12345; let result = ''; if (typeof num === 'string') { result = num.replace(/[0-9]/g, '-'); } console.log(result); // 👉️ ""
replace
如果错误仍然存在,请检查console.log
您调用replace
方法的值并使用typeof
运算符检查其类型。
如果该值是一个对象,则很有可能您忘记访问需要调用replace()
方法的特定属性。
const obj = { name: 'bobby', }; const result = obj.name.replace(/bo/, 'abc'); console.log(result); // 👉️ abcbby
该对象有一个name
字符串类型的属性,所以我们必须先访问该属性才能使用该String.replace()
方法。
String.replace()
方法返回一个新字符串,其中一个、一些或所有正则表达式的匹配项被替换为提供的替换项。
该方法采用以下参数:
姓名 | 描述 |
---|---|
图案 | 要在字符串中查找的模式。可以是字符串或正则表达式。 |
替换 | 用于通过提供的模式替换子字符串匹配的字符串。 |
该String.replace()
方法返回一个新字符串,其中替换了模式的匹配项。该方法不会更改原始字符串。
字符串在 JavaScript 中是不可变的。
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()
。