- •Internet Explorer
- •Основные операторы
- •Арифметические операторы
- •Приоритет
- •Операторы сравнения и логические значения
- •Логические значения
- •Сравнение строк
- •Сравнение разных типов
- •Строгое равенство
- •Сравнение с null и undefined
- •Условные операторы: if, '?'
- •Оператор if
- •Преобразование к логическому типу
- •Неверное условие, else
- •Несколько условий, else if
- •Оператор вопросительный знак '?'
- •Несколько операторов '?'
- •Нетрадиционное использование '?'
- •Взаимодействие с пользователем: alert, prompt, confirm
- •Confirm
- •Особенности встроенных функций
Оператор вопросительный знак '?'
Иногда нужно в зависимости от условия присвоить переменную. Например:
показать чистый исходник в новом окнеСкрыть/показать номера строкпечать кода с сохранением подсветки
01 |
var access; |
02 |
var age = prompt('Сколько вам лет?', ''); |
03 |
|
04 |
if (age > 14) { |
05 |
access = true; |
06 |
} else { |
07 |
access = false; |
08 |
} |
09 |
|
10 |
alert(access); |
Оператор вопросительный знак '?' позволяет делать это короче и проще.
Он состоит из трех частей:
условие ? значение1 : значение2 |
Проверяется условие, затем если оно верно — возвращается значение1 , если неверно — значение2, например:
access = (age > 14) ? true : false; |
Оператор '?' выполняется позже большинства других, в частности — позже сравнений, поэтому скобки можно не ставить:
access = age > 14 ? true : false; |
.. Но когда скобки есть — код лучше читается. Так что рекомендуется их писать.
В данном случае можно было бы обойтись и без оператора '?', т.к. сравнение само по себе уже возвращает true/false:
access = age > 14; |
«Тернарный оператор»
Вопросительный знак — единственный оператор, у которого есть аж три аргумента, в то время как у обычных операторов их один-два. Поэтому его называют «тернарный оператор».
Важность: 5
Перепишите if с использованием оператора '?':
показать чистый исходник в новом окнеСкрыть/показать номера строкпечать кода с сохранением подсветки
1 |
if (a + b < 4) { |
2 |
result = 'Мало'; |
3 |
} else { |
4 |
result = 'Много'; |
5 |
} |
Решение
Решение
result = (a + b < 4) ? 'Мало' : 'Много'; |
[Открыть задачу в новом окне]
Несколько операторов '?'
Несколько операторов if..else можно заменить последовательностью операторов '?'. Например:
показать чистый исходник в новом окнеСкрыть/показать номера строкпечать кода с сохранением подсветки
1 |
var a = prompt('a?', 1); |
2 |
|
3 |
var res = (a == 1) ? 'значение1' : |
4 |
(a == 2) ? 'значение2' : |
5 |
(a > 2) ? 'значение3' : |
6 |
'значение4'; |
7 |
|
8 |
alert(res); |
Поначалу может быть сложно понять, что происходит. Однако, внимательно приглядевшись, мы замечаем, что это обычный if..else!
Вопросительный знак проверяет сначала a == 1, если верно — возвращает значение1, если нет — идет проверять a == 2. Если это верно — возвращает значение2, иначе проверка a > 2 и значение3.. Наконец, если ничего не верно, то значение4.
Альтернативный вариант с if..else:
показать чистый исходник в новом окнеСкрыть/показать номера строкпечать кода с сохранением подсветки
01 |
var res; |
02 |
|
03 |
if (a == 1) { |
04 |
res = 'значение1'; |
05 |
} else if (a == 2) { |
06 |
res = 'значение2'; |
07 |
} else if (a > 2) { |
08 |
res = 'значение3'; |
09 |
} else { |
10 |
res = 'значение4'; |
11 |
} |
Важность: 5
Перепишите if..else с использованием нескольких операторов '?'.
Для читаемости — оформляйте код в несколько строк.
показать чистый исходник в новом окнеСкрыть/показать номера строкпечать кода с сохранением подсветки
01 |
var message; |
02 |
|
03 |
if (login == 'Вася') { |
04 |
message = 'Привет'; |
05 |
} else if (login == 'Директор') { |
06 |
message = 'Здравствуйте'; |
07 |
} else if (login == '') { |
08 |
message = 'Нет логина'; |
09 |
} else { |
10 |
message = ''; |
11 |
} |
Решение
Решение
показать чистый исходник в новом окнеСкрыть/показать номера строкпечать кода с сохранением подсветки
1 |
var message = (login == 'Вася') ? 'Привет' : |
2 |
(login == 'Директор') ? 'Здравствуйте' : |
3 |
(login == '') ? 'Нет логина' : |
4 |
''; |
[Открыть задачу в новом окне]