我不确定哪种方式使用多次更快,使用大量字符串变量进行测试 哪个更快用于检查字符串是否只是空格?
if (str.trim().length > 0) {
}
或者
if (str.trim() !== '') {
}
答案 0 :(得分:7)
那么,为什么不试试呢? http://jsperf.com/empty-string-comparison2
就每秒计算而言,它们相差不到1%(至少在Chromium上)。除非你每秒测试数百万个字符串,否则我不会担心它。
答案 1 :(得分:2)
简短的回答是“基准并找出答案!”。如果你这样做,你也可以尝试使用正则表达式,看看它有多快:
if (str.match(/^\s*$/))
答案 2 :(得分:2)
根据这个快速测试,Alex D建议的正则表达式更快。</ p>
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);
答案 3 :(得分:1)
我认为与两个字符串的比较相比,字符串长度比较更快。
答案 4 :(得分:1)
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>