Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   подскажите ошибку в переменных (https://javascript.ru/forum/misc/27291-podskazhite-oshibku-v-peremennykh.html)

mr.dassler 08.04.2012 16:43

подскажите ошибку в переменных
 
Объясните ошибку, почему при нажатии отмена или OK выводится только переменная s без переменной name и какое этому объяснение!?
var name = prompt("Введите ваше имя","");
var s = "<h1>Привет, "+name+"!</h1>";
if (!name)
{
name="незнакомец";
document.write(s);
}
else
document.write(s);

T-sh 08.04.2012 16:52

потому, что строка s формируется до того, как name принимает значение "незнакомец".

var name = prompt("Введите ваше имя","");
 if (!name) {name="незнакомец"; }
 var s = "<h1>Привет, "+name+"!</h1>";
 document.write(s);

T-sh 08.04.2012 16:58

или так:
var name = prompt("Введите ваше имя");
name = (!name)?"Незнакомец":name;
s = "<h1> Привет, "+name+"</h1>";
document.write(s);

mr.dassler 08.04.2012 17:03

Цитата:

Сообщение от T-sh (Сообщение 167780)
потому, что строка s формируется до того, как name принимает значение "незнакомец".

var name = prompt("Введите ваше имя","");
 if (!name) {name="незнакомец"; }
 var s = "<h1>Привет, "+name+"!</h1>";
 document.write(s);

Спасибо! вроде понятно.
Ещё скажите пожалуйста мой вопрос в книгах по JS под какую тему подпадает?? Чтоб более обширно почитать об этом и в будущем не делать таких ошибок.

T-sh 08.04.2012 17:04

Цитата:

Сообщение от Maxmaxmахimus (Сообщение 167785)
с чего это?

как минимум, с того, что s формируется во второй строчке, а name становится незнакомцем только после условия :)

T-sh 08.04.2012 17:05

Цитата:

Сообщение от mr.dassler (Сообщение 167787)
Спасибо! вроде понятно.
Ещё скажите пожалуйста мой вопрос в книгах по JS под какую тему подпадает?? Чтоб более обширно почитать об этом и в будущем не делать таких ошибок.

да я даже не знаю, какая это будет тема... наверное, работа с переменными.. или условные операторы..

T-sh 08.04.2012 17:05

кстати, вот так будет ещё круче:

var name =(name=prompt("Введите ваше имя"))?name:"Незнакомец";
s = "<h1> Привет, "+name+"</h1>";
document.write(s);

T-sh 08.04.2012 17:07

Цитата:

Сообщение от Maxmaxmахimus (Сообщение 167791)
T-sh,
ну ты нубок

сам ты нубок, перечитай ещё раз всё и опять пойми, что ты тупишь

Kolyaj 08.04.2012 17:08

Цитата:

Сообщение от T-sh
var name =(name=prompt("Введите ваше имя"))?name:"Незнакомец";

Нагородил-то

var name = prompt("Введите ваше имя") || "Незнакомец";

T-sh 08.04.2012 17:10

Цитата:

Сообщение от Kolyaj (Сообщение 167794)
Нагородил-то

var name = prompt("Введите ваше имя") || "Незнакомец";

да, это ещё круче, чем то, что круче первого :))))

Kolyaj 08.04.2012 17:11

Цитата:

Сообщение от Maxmaxmахimus
Последний раз редактировалось Maxmaxmахimus, Сегодня в 17:08.

Редактировать сообщения не спортивно.

T-sh 08.04.2012 17:12

Цитата:

Сообщение от Maxmaxmахimus (Сообщение 167797)
перечитал я твой код, херню ты написал ламерскую не пришло понимание того что я туплю, что я сделал не так?

сабж перечитай и потом прочитай то, что ты написал в комментах про твои выполнения строк сверху вниз.

а редактировать коммент, после того, как написал чушь и подсмотрел в чужом комменте — все умеют, это не показатель.

T-sh 08.04.2012 17:17

Цитата:

Сообщение от Maxmaxmахimus (Сообщение 167801)
бля меня расскусили( я только щас узнал про оператор или(( и отредактировал свое сообщение и добавил туда эту чудо технику, сам её ни когда не использовал, но теперь начну... спасибо те кколян(( прощайте пасоны ушел учить операторы((

опять себя клоуном выставляешь

Kolyaj 08.04.2012 17:23

Цитата:

Сообщение от Maxmaxmахimus
то есть ты думаешь что я вначале прочитал про оператор ИЛИ, узнал о нем и только потом отредактировал свое сообщение используя эти секретные знания?

Нет. Я думаю, что если бы я после написания своего сообщения увидел твоё про то же, написанное раньше, я бы своё стёр, чтобы не увеличивать энтропию. Но правки в уже прочитанном мною сообщении я не увижу никогда.


Часовой пояс GMT +3, время: 06:34.