Mike_Kharkov, специально для вас сидел набирал:
<html>
<head>
<meta charset="utf-8">
<script type="text/javascript">
var x = prompt('Сколько вам лет?', 0); // Запрос пользователю.
// Если ввод отменен, то prompt возвращает null. Иначе то, что ввел пользователь в строковом представлении (строку).
// Т.е., если пользователь ввел, к примеру, "1", то эта единица будет строкой (не числом).
// isNaN - глобальный метод. Пытается преобразовать переданный параметр в число.
// Если параметр не может быть преобразован, возвращает true, иначе возвращает false.
// ! - Логическое НЕ (!).
// Оператор инвертирует значение своего (одиночного) операнда.
// Логика.
// isNaN пытается преобразовать то, что мы получили от пользователя в число.
// Если ему это удается, он возвращает False, но поскольку инструкция if() выполняется только в том случае,
// когда выражение истинно (или может быть преобразовано к истине),
// обращаем False в True с помощью логического оператора НЕ (!).
if(!isNaN(x)) {
// new Date() - Создание объекта, в котором хранятся текущие дата и время.
// С помощью метода getFullYear() объекта Date, получаем полное представление текущего года.
var z = new Date().getFullYear();
// Важно: в данный момент в переменной x содержится строка, а не число.
// Но поскольку javascript автоматически преобразовывает к нужному типу данныx в зависимости от контекста,
// то на первой итерации (проходе) цикла, оно будет преобразовано в число, и дальнейшие операции
// уже будут выполняться с ним, как с числом.
/* Цитата из Фленегана:
если значение одного типа используется в контексте, требующем значение некоего другого типа,
интерпретатор JavaScript автоматически пытается преобразовать это значение.
*/
// Инструкция for/Цикл for. Ее шаблон выглядит примерно так:
// for (инициализация; проверка; шаг) {
// ... тело цикла ...
// }
// В строке ниже инициализация пропущена, поскольку значение нужной нам переменной (x) было присвоено раньше.
for(; x > 0; x--, z--) {
document.write(z + " - " + x + "<br>");
}
// Заметка. Если тело цикла состоит из одной строки, то можно обойтись без фигурных скобок, т.е. записать, например, так:
// for(; x > 0; x--, z--) document.write(z + " - " + x + "<br>");
}
</script>
</head>
<body>
</body>
</html>
// без комментариев скрипт выглядит так:
var x = prompt('Сколько вам лет?', 0);
if(!isNaN(x)) {
var z = new Date().getFullYear();
for(; x > 0; x--, z--) {
document.write(z + " - " + x + "<br>");
}
}
p.s.: если где ошибся, надеюсь, меня поправят.