У меня есть следующий фрагмент кода:
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::
Хорошо, я только что прочитал ответ Гуффы и сделал случайный скрипт для проверки, вот скрипт:
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);
Спасибо,
Александр
0
является допустимым индексом, но не соответствует действительности. Таким образом, методы индексации используют-1
для обозначения того, что его не существует. - person charlietfl   schedule 26.01.2015