javascript - 未知的函数行为

标签 javascript html 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;
}

最佳答案

它只是测试字符串是否对称,即索引 i 处的每个字符都等于距字符串末尾相同距离的字符(位于 length-i-1) 就像“雷达”

它可以像这样简化并变得更快:

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

关于javascript - 未知的函数行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15419808/

相关文章:

html - 位置 :sticky - not sticky when it reaches the footer

使用 eval 或 domsanitizer 执行自定义用户脚本的 Javascript

javascript - 缩进/打破 jquery 链以提高可读性

javascript - 如何在Javascript中获取图像主体?

jquery - 背景点击事件适用于一切 - 修复?

c++ - 排序链表实现,得到相同的链表

javascript - 使用 JS 单击跨度时更改跨度的 onClick

c# - 如何使存储为 C# 字符串的 HTML 元素正确显示?

c - 如何测试四子棋胜利条件?

sql - 在一对多系统中存储和计算关系