У меня есть несколько вопросов о логике программы, которая представляет собой викторину.
var score = 0;
var questions = [
["How many moons does the Earth have?", 1],
["How many moons does Saturn have?", 31],
["How many moons does Venus have?", 0]
];
for (i=0; i<questions.length; i++)
{
askQuestion(questions[i]);
}
function askQuestion(inquiry)
{
var answer = prompt(inquiry[0]);
if (answer == inquiry[1]){
alert("Correct!");
score++;
}else{
alert("Sorry. The correct answer is " + question[1]);
}
}
Я понимаю первые три утверждения (но с радостью буду исправлен).
Первый оператор инициализирует объявленную глобальную переменную числовым литералом 0, поскольку именно так должна начинаться оценка викторины.
Второй оператор создает многомерный массив, каждый элемент которого имеет вопрос и соответствующий ответ.
Третий оператор - это цикл for, который циклически перебирает каждый вопрос (значение индекса) массива, объявленного «questions».
Четвертое утверждение - вот где у меня возникли небольшие проблемы с пониманием. И я надеялся, что прекрасные люди здесь могут внести некоторую ясность.
Вот то, что, как мне кажется, я понимаю. Пожалуйста, поправьте меня, если я полностью в левой части понимания основной логики. (1) Четвертая инструкция создает параметр (запрос). (2) Локальная переменная «answer» объявляется со значением, которое вводится пользователем через диалоговое окно. Аргумент «запрос [0]» соответствует каждому вопросу в массиве. (3) Каждому ответу соответствует значение «запрос [1]».
Я, наверное, ошибаюсь в своем предположении. Если да, то дайте мне некоторую ясность, потому что это для меня головная боль.
Спасибо!! :)
"The correct answer is " + question[1] должен быть "The correct answer is " + inquiry[1]Под «четвертое заявление» вы ссылаетесь на тот, который начинается с function, или на инструкцию в теле цикла (askQuestion(questions[i]);)?
Что меня сбивало с толку, так это вложенный оператор IF в четвертом операторе, потому что сначала казалось, что он обращается только к первому значению индекса многомерного массива, но он не может просто обращаться к этому значению индекса, поскольку Оператор инкремента дает балл за правильный вопрос. Прав ли я в этом понимании?
Под четвертым утверждением я имею в виду саму функцию, а не вызов функции в цикле for.
Кстати, эта викторина работает так, как есть. Он проходит через каждый вопрос, выставляя балл (добавляя 1 к значению глобальной переменной «score» с помощью оператора увеличения во вложенном операторе if в функции).
Внутри функции вы не знаете, что такое inquiry. Все, что можно сказать, это то, что он выглядит как двухэлементный массив. Только из вызова askQuestion(questions[i]); вы можете увидеть, что он передает один из внутренних массивов от questions функции в качестве параметра inquiry.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Итак, никто не знает, к чему относятся запрос [0] и запрос [1]?
Я думаю, что запрос [0] относится к каждому вопросу, а запрос [1] относится к каждому ответу. Я просто не знаю наверняка.
Простите за шишку.
Спасибо.
«Четвертая инструкция создает параметр (запрос).» - самое главное, четвертый оператор создает функция с именем
askQuestion. Эта функция что-то делает (код в теле), используя объявленные параметры.