TypeError: replaceAll 不是 JavaScript 中的函数
TypeError: replaceAll is not a function in JavaScript
replaceAll()
当我们对非字符串类型的值调用方法时,会发生“replaceAll”不是函数错误
。
要解决该错误,请仅replaceAll()
在支持的浏览器中对字符串调用该方法。
下面是错误如何发生的示例。
const value = 100; // ⛔️ Uncaught TypeError: value.replaceAll is not a function const result = value.replaceAll('0', '9');
我们在数字上调用了
String.replaceAll()方法,因此发生了错误。
在调用之前将值转换为字符串replaceAll()
要解决此错误,请在调用该方法之前将值转换为字符串。
const str = 100; const result = String(str).replaceAll('0', '9'); console.log(result); // 👉️ "199"
在调用方法之前,我们使用String()
构造函数将值转换为字符串replaceAll()
。
在调用之前有条件地检查值是否为字符串replaceAll()
或者,您可以在调用方法之前有条件地检查值是否为字符串replaceAll()
。
const value = null; const result = typeof value === 'string' ? value.toString().replaceAll('0', '9') : ''; console.log(result); // 👉️ ""
我们使用了三元运算符,它与语句非常相似if/else
。
如果值是字符串类型,我们返回调用该方法的结果
replaceAll()
,否则,我们返回一个空字符串。
您还可以在调用方法之前使用简单的if
语句来检查值是否为字符串replaceAll()
。
let value2 = 'abc'; if (typeof value2 === 'string') { value2 = value2.replaceAll('abc', 'xyz'); } console.log(value2); // 👉️ 'xyz'
如果该值是一个字符串,该if
块将在我们调用该replaceAll()
字符串的方法的地方运行。
replaceAll()
该方法的替代方法
replaceAll
Internet Explorer 和其他一些较旧的浏览器不支持该方法。
如果您需要支持旧版浏览器,请改用replace
带有g
标志的方法。
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()
方法来获得相同的结果。
const str = 'a__b'; const result = str.split('_').join('#'); console.log(result); // 👉️ "a##b"
我们使用该split()
方法在每次出现下划线时拆分字符串。
然后我们
用散列分隔符连接数组中的子字符串。
这种方法与不使用正则表达式的方法获得相同的结果replace()
。