微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

JavaScript替换回调 – 性能问题

JavaScript中,您可以在regex字符串替换操作中定义回调处理程序:
str.replace(/str[123]|etc/,replaceCallback);

想象一下,你有一个字符串和替换的查找对象.

var lookup = {"str1": "repl1","str2": "repl2","str3": "repl3","etc": "etc" };

和这个回调函数

var replaceCallback = function(match) { 
  if (lookup[match])
    return lookup[match]; 
  else
    return match;
}

你如何评估上述回调的表现?有什么办法可以改进吗?将

if (match in lookup) //....

甚至

return lookup[match] || match;

导致JS编译器优化的机会,还是一切都一样?

解决方法

1到Annie关于perf基准.

但我会和

return lookup[match] || match;

它不仅仅是对属性的单一检索(而不是 – 禁止优化 – 两个,如您之前的例子),但它也更短,(对于较短的代码并不总是这样). JavaScript编码器它会倾向于给新手一点点,但是你想要教新手的第一件事就是特别(和优秀)||和&&在JavaScript中工作,所以…

在某些实现中,它也可以围绕几个(非常)边缘的情况. (示例:{}中的’toString’应为true [所有对象从Object原型继承toString],但在Microsoft的JScript中为false).

关于优化:除非显而易见(不要让你的循环条件成为一个必须去计数的功能,如果它可以是一个不变的,避免不必要地重复查找),即使没有一般的讨论是否值得担心这个东西之前你看到一个问题(有时被称为“过早优化”),对于一般的Web来说尤其如此.不同的微优化在不同的实现中有不同的结果,有时是冲突的结果(“A”在Internet Explorer中更好,但在FireFox中更糟糕,而且相反).大多数情况下,这是一个等待直到您看到具体问题的问题,然后解决该问题.

我更喜欢简单和清晰,除非我有强烈的理由相信,一些笨蛋会给我一个可衡量的现实世界的改善.

原文地址:https://www.jb51.cc/js/155317.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐