【问题标题】:Unknown function behavior未知的函数行为
【发布时间】:2013-03-03 10:10:29
【问题描述】:
我试图了解这个函数的作用,但我一无所知。有什么想法吗?
var mystery = function (str) {
var x=true;
for(var i=0; i<str.length/2; i++){
if(str.charAt(i)!=str.charAt(str.length-i-1)){
x = false;
}
}
return x;
}
【问题讨论】:
标签:
javascript
html
logic
【解决方案1】:
它只是测试字符串是否对称,即索引i 处的每个字符都等于与字符串结尾(length-i-1)相同距离处的字符,如"radar"。
它可以像这样被简化并变得更快:
var mystery = function (str) {
for (var i=0; i<str.length/2; i++){
if (str.charAt(i) !== str.charAt(str.length-i-1)){
return false;
}
}
return true;
}
而且速度更快但不太清晰:
var mystery = function (str) {
for (var i=~~(str.length/2); i--;){
if (str.charAt(i) !== str.charAt(str.length-i-1)){
return false;
}
}
return true;
}
为了好玩,jspef 确认它:http://jsperf.com/palyndromes