Я пытаюсь лучше понять рекурсивный парсер спуска - в частности https://github.com/douglascrockford/JSON-js/blob/master/json_parse.js. Я смущен о цели следующей функции:Устранение неполадок рекурсивного анализа спуска
next = function (c) {
// If a c parameter is provided, verify that it matches the current character.
if (c && c !== ch) {
error("Expected '" + c + "' instead of '" + ch + "'");
}
// Get the next character. When there are no more characters,
// return the empty string.
ch = text.charAt(at);
at += 1;
return ch;
},
Может кто-то пожалуйста, помочь моему пониманию этого? Насколько я понимаю, в настоящее время (вероятно, я ошибаюсь) он проверяет, не является ли аргумент (с) не таким же, как следующий символ в строке? Если да, то в чем смысл этого? Любая помощь будет оценена по достоинству.
Спасибо за ваш ответ. Так делает ли инструкция if проверить, присутствует ли аргумент (c) во всей строке или только остальная часть строки? Я немного смущен как «if (c && c! == ch)», кажется, указывает мне, что он проверяет, не соответствует ли текущий символ следующему? Благодарим за терпение. –
Нет, первый тест предназначен для проверки того, что символ фактически передан функции (если вы посмотрите на остальную часть кода, вы увидите, что 'next' может быть вызван либо как' next() ', либо как' next ('-') 'или аналогичный). – Renzo