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