javascript - 循环到单个语句

标签 javascript jquery loops replace

在我们的一个应用程序中,我们有以下几行:

while (text.indexOf(' ') !== -1)
    text = text.replace(' ', '_');
while (text.indexOf('*') !== -1)
    text = text.replace('*', 'x');

据我所知,我也可以这样写来避免循环:

text = text.replace(/ /g, '_');
text = text.replace(/*/g, 'x');

这两个版本中哪个是更好的编程风格?这两者之间有什么区别(性能、结果、错误……)吗?我们是否必须尽可能避免循环?

最佳答案

我注意到使用正则表达式会使新的(新手/没有经验的)开发人员感到困惑。因此,他们会发现第一个选项更容易阅读和理解它在做什么。

然而,第二个选项是:

  • 简短明了,也易于阅读(前提是您熟悉正则表达式);
  • 理论上它应该更快,因为您让 native 代码完成所有繁重的工作,而不是要求它解释循环代码并重新分配字符串变量。但是,正则表达式有一些开销可能会导致效率低下。但是,它不适用于(明显的)现实生活场景,尤其是在这种情况下。

至于错误,如果您在正则表达式字符串中没有犯任何错误,它不会抛出任何错误。具有讽刺意味的是,你做到了(你应该转义特殊字符 *)。所以,这是选择选项 1 的原因之一 :)

text.replace(/\*/g, 'x');

关于javascript - 循环到单个语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37159645/

相关文章:

javascript - 获取 Backbone 中的 Dropped Element 值

r - Fortran do-loop 任意索引,如 R 中的 for-loop?

JavaScript OnChange 仅在 Internet Explorer 中不会触发

php - 使用 PHP 将 Google map 保存为 jpeg?

javascript - 我可以创建自定义表单元素(上传、下拉、复选框)吗?

c# - 使用 foreach 循环获取列表中的最后 3 个项目#

javascript原型(prototype)循环for in array

JavaScript:是否允许在 `ternary` 语句中使用 `if` 语句?

javascript - 点击/ul li/jQuery 平滑滚动

javascript,循环字段和验证