TypeError: replaceAll 不是 JavaScript 中的函数

TypeError: replaceAll 不是 JavaScript 中的函数

TypeError: replaceAll is not a function in JavaScript

replaceAll()当我们对非字符串类型的值调用方法时,会发生“replaceAll”不是函数错误

要解决该错误,请仅replaceAll()在支持的浏览器中对字符串调用该方法。

typeerror-replaceall-is-not-a-function

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

索引.js
const value = 100; // ⛔️ Uncaught TypeError: value.replaceAll is not a function const result = value.replaceAll('0', '9');

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

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

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

索引.js
const str = 100; const result = String(str).replaceAll('0', '9'); console.log(result); // 👉️ "199"

在调用方法之前,我们使用String()构造函数将值转换为字符串replaceAll()

在调用之前有条件地检查值是否为字符串replaceAll()

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

索引.js
const value = null; const result = typeof value === 'string' ? value.toString().replaceAll('0', '9') : ''; console.log(result); // 👉️ ""

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

如果值是字符串类型,我们返回调用该方法的结果
replaceAll(),否则,我们返回一个空字符串。

您还可以在调用方法之前使用简单的if语句来检查值是否为字符串replaceAll()

索引.js
let value2 = 'abc'; if (typeof value2 === 'string') { value2 = value2.replaceAll('abc', 'xyz'); } console.log(value2); // 👉️ 'xyz'

如果该值是一个字符串,该if块将在我们调用该replaceAll()
字符串的方法的地方运行。

replaceAll()该方法的替代方法

replaceAllInternet Explorer 和其他一些较旧的浏览器不支持该方法。

如果您需要支持旧版浏览器,请改用replace带有g
标志的方法。

索引.js
const str = 'a__b'; const result = str.replace(/_/g, '#'); console.log(result); // 👉️ "a##b"

replace方法有两个参数:

  • 我们要在字符串中匹配的正则表达式
  • 每场比赛的替换

正斜杠标记/ /正则表达式的开始和结束。

我们使用了g(global) 标志,因为我们想要替换字符串中所有出现的字符。

如果您在阅读正则表达式时需要帮助,请查看

MDN 提供的
正则表达式速查表。

它包含一个表格,其中包含每个特殊字符的名称和含义以及示例。

或者,使用String.split()Array.join()方法

如果不想使用正则表达式,可以使用String.split()
Array.join()方法来获得相同的结果。

索引.js
const str = 'a__b'; const result = str.split('_').join('#'); console.log(result); // 👉️ "a##b"

我们使用该split()方法在每次出现下划线时拆分字符串。

然后我们
用散列分隔符连接数组中的子字符串

这种方法与不使用正则表达式的方法获得相同的结果replace()