为什么我的JavaScript if语句总是正确的?

时间:2015-12-28 19:22:34

标签: javascript

在下面的代码中,为什么每个字符看起来都等于其他每个字符?

  

编写一个JavaScript函数,将一个句子作为参数和   确定该句子中哪个单词的个数最多   重复的字母(重复的字母不必连续)。

     

如果句子中有多个单词具有相同的最大重复字母,   将它们全部返回到数组中。

var repeatedLettersInAString = function(){
    var repeatedLetterCount = 0;
    var wordsWithRepeatedLetters = {};
    var userString = prompt("enter your string", "it will go here!").split(' ');

    /* var i selects the array element, var x will be the
    character to which var n will be compared. */

    console.log(userString);

    for(var i = 0; i < userString.length; i++){
        console.log(userString[i] + " userString");
        for (var x = 0; x < userString[i].length; x++){
            for (var n = 0; n < userString[i].length; n++){

                if (userString[i].charAt(x) === userString[i].charAt(n), x!==n){
                    repeatedLetterCount++;
                    wordsWithRepeatedLetters[i] = userString[i];
                    console.log(wordsWithRepeatedLetters);
                }else{
                    console.log("There are no repeating characters");
                }
            }
        }
    }

    console.log(repeatedLetterCount);
    console.log(wordsWithRepeatedLetters);
};
repeatedLettersInAString();

1 个答案:

答案 0 :(得分:5)

让我们看一下引起我注意的代码中的一个特定行:

if (userString[i].charAt(x) === userString[i].charAt(n), x!==n){

注意这里不寻常的事情:表达式中间的逗号。根据{{​​3}},以下是逗号运算符的工作原理:

  

逗号运算符计算每个操作数(从左到右)并返回最后一个操作数的值。

这里重要的一点是“返回最后一个操作数的值”。也就是说,除非xn相等,否则if语句始终为真,这似乎不是您想要的行为。我认为你实际上的目标是两个表达式都是真的。如果是这种情况,则需要使用&&运算符(JavaScript逻辑“和”运算符)代替逗号。