Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.03.2019, 20:44   #1
Radixx
Пользователь
 
Регистрация: 27.02.2019
Сообщений: 17
Вопрос кто может дать пояснения к первой строке кода?

Код:
var caret = sel.length == 0 ? start + tag1.length + 2
: start + tag1.length + 2 + sel.length + tag2.length + 3;
txta.selectionStart = caret;
txta.selectionEnd = caret;
txta.scrollTop = scroll;
Кто может дать пояснения к первой строке кода?
Вроде все работает, но я не пойму, что берётся в качестве логической переменной.
Radixx вне форума Ответить с цитированием
Старый 05.03.2019, 21:04   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Radixx Посмотреть сообщение
var caret = sel.length == 0 ? start + tag1.length + 2
: start + tag1.length + 2 + sel.length + tag2.length + 3;
это эквивалентно коду:
Код:
var caret = 0;
if sel.length == 0
    caret = start + tag1.length + 2;
else
    caret = start + tag1.length + 2 + sel.length + tag2.length + 3;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 05.03.2019, 21:08   #3
Radixx
Пользователь
 
Регистрация: 27.02.2019
Сообщений: 17
По умолчанию

В принципе я понимаю, что проверяется условие sel.length == 0
Но почему этому условию не мешает операция присваивания?
Это так и должно быть?

Спасибо, разобрался, с вашими пояснениями
Только мне кажется, что запись должна быть эквивалентна
Код:
var caret = sel.length;
if sel.length == 0
    caret = start + tag1.length + 2;
else
    caret = start + tag1.length + 2 + sel.length + tag2.length + 3;
Я так код не пишу, попроще стараюсь.

Последний раз редактировалось Radixx; 05.03.2019 в 21:11. Причина: не видел ответа
Radixx вне форума Ответить с цитированием
Старый 05.03.2019, 21:30   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Radixx Посмотреть сообщение
Только мне кажется, что запись должна быть эквивалентна
не совсем так.
точнее так:
Код:
var caret;
if(sel.length == 0)
    caret = start + tag1.length + 2;
else
    caret = start + tag1.length + 2 + sel.length + tag2.length + 3;

Цитата:
Сообщение от Radixx Посмотреть сообщение
Но почему этому условию не мешает операция присваивания?
читайте про тернарную операцию if - https://learn.javascript.ru/ifelse#o...ositelnyy-znak

Цитата:
Сообщение от Radixx Посмотреть сообщение
Я так код не пишу, попроще стараюсь.
ну, это Вы зря. Это несложно и просто.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 05.03.2019, 22:43   #5
Radixx
Пользователь
 
Регистрация: 27.02.2019
Сообщений: 17
По умолчанию

Да, в общем, простой код, только вот так было бы понятнее:
Код:
var caret = (sel.length == 0) ? start + tag1.length + 2 ... .. ..
Спасибо
Radixx вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
4.Дан текстовый файл,содержащий некоторые пояснения,заключенные в скобки. Убрать эти пояснения вместе со скобками. Выро viktoriya95 Паскаль, Turbo Pascal, PascalABC.NET 0 21.02.2014 22:36
Пояснения строк кода Misha305 Общие вопросы C/C++ 3 28.12.2011 21:28