未知的功能行为

时间:2013-03-14 20:45:59

标签: javascript html5 logic

我试图了解这个功能的作用,但我很无能为力。有什么想法吗?

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;
}

1 个答案:

答案 0 :(得分:5)

它只是测试字符串是否对称,即索引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;
}

稍快但不太清楚:

{{1}}

为了好玩,jspef确认了它:http://jsperf.com/palyndromes