Назначение -1 в String.fromCharCode(k)

У меня есть следующий фрагмент кода:

return (AllowableCharacters.indexOf(String.fromCharCode(k)) != -1);

Теперь я не совсем понимаю использование -1 в этом сценарии.

Сценарий читает так:

first String.fromCharCode(k) != -1 выполняется (k - код ключа, я динамически получаю из другого сценария).

Затем я получаю indexof(String.fromCharCode(k)!= -1) из AllowableCharacters.

Какая строка примерно такая:

AllowableCharacters = "abc" ; 

Я также понимаю, что если indexof не может найти значение в приведенной выше строке, он возвращает -1.

Возвращаясь к моему вопросу, однако, почему -1 в сценарии?

РЕДАКТИРОВАТЬ::

Чтобы сделать мой вопрос проще, как бы вы прочитали следующую строку:

String.fromCharCode(k))!=-1

простым простым английским языком.

РЕДАКТИРОВАТЬ 2::

Хорошо, так что я просто прочитал ответ Guffa и сделал случайный скрипт для проверки, вот сценарий:

 var store = "abcdefgpS";

        function check_index(){
            console.log(store.indexOf(String.fromCharCode(83))); 
        };

в приведенной выше функции!-1 исключается, поэтому в console.log, если совпадение найдено, мы получаем indexOf, где был найден символ, и, если совпадение не найдено, мы получаем -1.

ТЕПЕРЬ, теперь это не то, что мы хотим, мы хотим "сказать мне, если значение есть"(вернуть true) или "сказать мне, если значение отсутствует"(вернуть false).

так что мы делаем, мы меняем скрипт выше:

 var store = "abcdefgpS";

        function check_index(){
            console.log(store.indexOf(String.fromCharCode(83)) !-1); 
        };

который дает вам истинные или ложные значения.

теперь как

return (store.indexOf(String.fromCharCode(83))!-1)

читать как:

if (store.indexOf(String.fromCharCode(83)) !-1){
      return true;
}else { return false; } 

Я не вижу оператора if в.return (store.indexOf(String.fromCharCode(83)) !-1);

Спасибо,

Александр

2 ответа

Решение

Вы ошиблись в порядке исполнения.

Сначала это выражение оценивается: String.fromCharCode(k),

Предположим, что результатом является строка "b", Это используется в выражении: AllowableCharacters.indexOf("b"),

Предположим, что символ находится во втором символе в строке, который имеет индекс 1, поэтому результат 1, Это используется в выражении 1 != -1,

Как 1 не равно -1результат true, который возвращается.

Короче говоря, -1 сравнивается с результатом indexOf метод, как методы возвращаются -1 когда ничего не находит.


Это оператор сравнения != что приводит к значению true или же false, Он сравнивает значения, и результат зависит от того, равны они или нет. if заявление не нужно, чтобы превратить результат в true или же falseэто уже значение выражения сравнения.

Иногда вы видите такой код:

if (AllowableCharacters.indexOf(String.fromCharCode(k)) != -1) {
  return true;
} else {
  return false;
}

if В таких случаях утверждение излишне. Выражение в if заявление уже true или же falseтак что его можно вернуть напрямую:

return AllowableCharacters.indexOf(String.fromCharCode(k)) != -1;

Это условие, которое проверяет, разрешен ли символ. Это вернет boolean (результат сравнения).

Давайте разберемся с этим.

  1. Во-первых, мы получаем строку из кода с String.fromCharCode, Предположительно, мы получили это от какого-то входного события.
  2. Затем мы получаем индекс этой результирующей односимвольной строки в AllowableCharacters с помощью indexOf,
  3. Наконец, мы проверяем, является ли этот результат -1, Тест оценивает к boolean значение, и оно может быть возвращено из функции, как и любое другое значение. Значение -1 указывает на то, что символ не разрешен, поэтому мы используем != определить, является ли персонаж действительным.
Другие вопросы по тегам