我不确定哪种方法可以多次使用更快,使用大量字符串变量进行测试。
其中哪一个更快用于检查字符串是否只是空格?
if (str.trim().length > 0) {
}
或者
if (str.trim() !== '') {
}
我不确定哪种方法可以多次使用更快,使用大量字符串变量进行测试。
其中哪一个更快用于检查字符串是否只是空格?
if (str.trim().length > 0) {
}
或者
if (str.trim() !== '') {
}
好吧,为什么不测试呢?http://jsperf.com/empty-string-comparison2
就每秒计算量而言,它们相差不到 1%(至少在 Chromium 上)。除非您每秒测试数百万个字符串,否则我不会担心。
简短的回答是“基准测试并找出答案!”。如果你这样做,你也可以尝试使用正则表达式,看看它有多快:
if (str.match(/^\s*$/))
根据 Alex D 建议的这个快速测试正则表达式更快。
string = " l l l sfsf __ ";
d = new Date().getTime();
for(var i = 0; i < 900000; i++){
if (string.trim().length > 0) continue;
}
d1 = new Date().getTime() - d;
alert(d1);
d = new Date().getTime();
for(var i = 0; i < 900000; i++){
if (string.trim() !== '') continue;
}
d1 = new Date().getTime() - d;
alert(d1);
d = new Date().getTime();
for(var i = 0; i < 900000; i++){
if (string.match(/^\s*$/)) continue;
}
d1 = new Date().getTime() - d;
alert(d1);
我相信字符串长度比较比两个字符串的比较更快。
JSFiddle:http: //jsfiddle.net/pja77gzp/
<script>
var s1 = ' ';
var s2 = ' ';
var benchmarkCount = 10000000;
function testStringComparison() {
var t = new Date();
var i = 0;
for (var i = 0; i < benchmarkCount; i++) {
if (s1.trim().length == s2.trim().length) {
i++;
}
}
t = (new Date()) - t;
document.writeln("testStringComparison completed");
document.writeln(t);
}
function testStringLenght() {
var t = new Date();
var i = 0;
for (var i = 0; i < benchmarkCount; i++) {
if (s1.trim() == s1.trim()) {
i++;
}
}
t = (new Date()) - t;
document.writeln("testStringLenght completed");
document.writeln(t);
}
function startBenchmark() {
testStringComparison();
testStringLenght();
}
setTimeout(startBenchmark, 1000);
</script>