Если я заменю false и! == на true и ===, функция даст неожиданные результаты. Любое объяснение? - PullRequest
0 голосов
/ 07 сентября 2018
function palindrome(str) {
    var len = str.length;
    for ( var i = 0; i < Math.floor(len/2); i++ ) {
       if (str[i] !== str[len - 1 - i]) {
          return false;
        }
     }
     return true;
   }

Если я заменим! == и false внутри цикла for на ===, а true и за пределами true на false, функция не будет работать должным образом. Кто-нибудь может сказать мне, почему?

1 Ответ

0 голосов
/ 07 сентября 2018

Позвольте мне проиллюстрировать это на примере

Допустим, мы покрыли коробку, полную белого и черного мрамора. И заявление: «В коробке только белый мрамор». Как вы можете быть уверены, что это утверждение верно? Ну ... вы выбираете шарики один за другим (в цикле for) и проверяете, все ли они белые. Если вы обнаружите, что не является (! ==) , вы знаете, что утверждение является ложным . И ваша функция это делает.

Как вам нужно - с переключенным оператором и истинным значением - все будет примерно так: «Я выберу один мрамор, и если он будет IS белый (===) Я знаю, что утверждение верно . " Теперь ... это правда? Нет, это не так.

Понял? (В вашем случае вы проверяете не черный и белый шарики, а одинаковые символы или нет)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...