2012-03-27 3 views
1

Я введите следующий код в консоли Firebug на Win 7 последняя, ​​Firefox 11:Javascript унарный вопрос поджигатель

var age = 26; 

while (age < 37) { 
    console.log("You can join!"); 
    console.log(age); 
    age++; 
} 

Он выкладывает то, что я ищу, но печатает дополнительный «36», в самом конце , Я не понимаю, почему. Вот что я хочу сделать: 1. Проверьте, не может ли человек моложе 37 лет (им не может быть 37 лет или старше). 2. Если они отвечают требованиям, он должен напечатать «Вы можете присоединиться!». Вот и все. Почему он выплевывает лишние 36 в конце?

Я только начал изучать JavaScript, и этот фрагмент не используется ни для чего, я просто подключаю код к FireBug для удовольствия.

Я тоже новичок в stackoverflow. Спасибо за поддержку.

+0

Я не уверен, почему вы не ожидали бы его напечатать '36' ... –

+0

См [этот вопрос] (http://stackoverflow.com/questions/8618270/using-a- block-return-value-in-javascript) для некоторой связанной информации. Есть некоторая непригодная возвращаемая ценность, которая случается в некоторых случаях. В принципе вы можете его игнорировать. Окончательная итерация не происходит дважды. –

+0

@PeterOlson: Я думаю, что ключевым словом является * «extra» *. В консоли будет '36' дважды. –

ответ

1

Так оно ведет себя нормально. По умолчанию Firebug показывает значение последнего оператора.

var age = 9; 
var temp = 10; 

age++; 
age < temp; 

Вы можете увидеть false в консоли. Я думаю, это потому, что firebug использует eval. Следующий оператор также возвращает то же самое.

eval("var age = 9;var temp = 10;age++;age < temp;"); 
+0

Firebug непреднамеренно печатает значение последнего оператора? Значит, это не МОЙ КОД, чтобы напечатать лишние 36? – nodebase

+0

Нет, это не ваш код :). Ваш код верен. – Diode

Смежные вопросы