为什么将正则表达式模式存储在var中



我是软件开发的新手,想知道在变量中存储正则表达式模式是否有任何差异、性能原因,如以下示例所示:

示例1:

var str = "Hello world!";
var patt = /Hello/g;
var result = patt.test(str);

示例2:

var str = "Hello world!";
var result = /Hello/g.test(str);

我认为这与代码的可读性有关,例如,您可能有一个包含太多字符的正则表达式,将其定义为变量可以使代码库变得干净。。。如果你对正则表达式感兴趣,那么你可以考虑检查编译器是如何制作的,尤其是Lexing是编译器的一部分。。

总之,我不认为这有性能上的好处,但这是为了提高代码的可读性

两者之间没有可测量的差异。您可以通过如下方式每运行1000000次来测试示例1和示例2的性能:

function measure(message, times, callback) {
var start = new Date();
for(var i = 0; i < times; i++) {
callback();
}
var end = new Date();
console.log(message + ': ' + ((end - start) / 1000) + ' sec')
}
measure('example 1', 1000000, function() {
var str = "Hello world!";
var patt = /Hello/g;
var result = patt.test(str);
});
measure('example 2', 1000000, function() {
var str = "Hello world!";
var result = /Hello/g.test(str);
});

多次运行代码片段可以看到,有时示例1稍快,有时示例2稍快。与VxWorks中的C不同,JavaScript并不实时运行,例如垃圾收集和其他语言&操作系统开销掩盖了您使用正则表达式示例的方式。

最新更新