Лекция
Привет, сегодня поговорим про всё вместе, обещаю рассказать все что знаю. Для того чтобы лучше понимать что такое всё вместе, особенности javascript , настоятельно рекомендую прочитать все из категории Выполнение скриптов на стороне клиента JavaScript, jqvery, JS фреймворки (Frontend).
switch
В этой главе приводятся основные особенности javascript , на уровне базовых конструкций, типов, синтаксиса.
Она будет особенно полезна, если ранее вы программировали на другом языке, ну или как повторение важных моментов раздела.
Все очень компактно, со ссылками на развернутые описания.
Операторы разделяются точкой с запятой:
1 |
alert( 'Привет' ); alert( 'Мир' ); |
Как правило, перевод строки тоже подразумевает точку с запятой. Так тоже будет работать:
1 |
alert( 'Привет' ) |
2 |
alert( 'Мир' ) |
..Однако, иногда JavaScript не вставляет точку с запятой. Например:
1 |
var a = 2 |
2 |
+3 |
3 |
4 |
alert(a); // 5 |
Бывают случаи, когда это ведет к ошибкам, которые достаточно трудно найти и исправить.
Поэтому рекомендуется точки с запятой ставить. Сейчас это, фактически, стандарт.
Поддерживаются однострочные комментарии // ...
и многострочные /* ... */
:
Подробнее: Структура кода.
var
. Могут хранить любое значение:
var x = 5; |
x = "Петя" ; |
1 |
x = 1; // число |
2 |
x = "Тест" ; // строка, кавычки могут быть одинарные или двойные |
3 |
x = true ; // булево значение true/false |
4 |
x = null ; // спец. значение (само себе тип) |
5 |
x = undefined ; // спец. значение (само себе тип) |
Также есть специальные числовые значения Infinity
(бесконечность) и NaN
.
Значение NaN
обозначает ошибку и является результатом числовой операции, если она некорректна.
Про объекты мы поговорим в главе Объекты как ассоциативные массивы, они в JavaScript сильно отличаются от большинства других языков.
null
не является «ссылкой на нулевой адрес/объект» или чем-то подобным. Это просто специальное значение.
Оно присваивается, если мы хотим указать, что значение переменной неизвестно.
Например:
var age = null ; // возраст неизвестен |
undefined
означает «переменная не присвоена».
Например:
var x; |
alert( x ); // undefined |
Можно присвоить его и явным образом: x = undefined
, но так делать не рекомендуется.
$
и подчеркивание _
допускаются наравне с буквами.Подробнее: Переменные, Введение в типы данных.
Простейшие функции для взаимодействия с посетителем в браузере:
вопрос
и возвратить введенную строку, либо null
, если посетитель нажал «Отмена».вопрос
и предложить кнопки «Ок», «Отмена». Возвращает, соответственно, true/false
.Все эти функции являются модальными, т.е. не позволяют посетителю взаимодействовать со страницей до ответа.
Например:
1 |
var userName = prompt( "Введите имя?" , "Василий" ); |
2 |
var smokes = confirm( "Вы хотите чаю?" ); |
3 |
4 |
alert( "Посетитель: " + userName); |
5 |
alert( "Чай: " + smokes); |
Подробнее: Взаимодействие с пользователем: alert, prompt, confirm.
+
.
Если хоть один аргумент — строка, то другой тоже приводится к строке:
1 |
alert( 1 + 2 ); // 3, число |
2 |
alert( '1' + 2 ); // '12', строка |
3 |
alert( 1 + '2' ); // '12', строка |
===
проверяет точное равенство, включая одинаковый тип. Это самый очевидный и надежный способ сравнения.
Остальные сравнения == < <= > >=
осуществляют числовое приведение типа:
1 |
alert( 0 == false ); // true |
2 |
alert( true > 0 ); // true |
Приведения не будет при сравнении двух строк (см. Об этом говорит сайт https://intellect.icu . далее).
Исключение: значения null
и undefined
ведут себя в сравнениях не как ноль.
null == undefined
и не равны ничему еще. В частности, не равны нулю.===
) значение null
преобразуется к нулю, аundefined
— становится NaN
(«ошибка»).Такое поведение может привести к неочевидным результатам, поэтому лучше всего использовать для сравнения с ними ===
.
Например, забавное следствие этих правил для null
:
1 |
alert( null > 0 ); // false, т.к. null преобразовано к 0 |
2 |
alert( null == 0 ); // false, в стандарте явно указано, что null равен лишь undefined |
3 |
4 |
// но при этом (!) |
5 |
alert( null >= 0 ); // true, т.к. null преобразовано к 0 |
null
не равно нулю и не больше, но при этом null >= 0
возвращает true
!
Поэтому получается, что строчные буквы всегда больше, чем прописные:
1 |
alert( 'а' > 'Я' ); // true |
Подробнее: Основные операторы, Операторы сравнения и логические значения.
В JavaScript есть логические операторы: И (обозначается &&
), ИЛИ (обозначается ||
) и НЕ (обозначается !
). Они интерпретируют любое значение как логическое.
Не стоит путать их с побитовыми операторами И, ИЛИ, НЕ, которые тоже есть в JavaScript и работают с числами на уровне битов.
Как и в большинстве других языков, в логических операторах используется «короткий цикл» вычислений. Например, вычисление выражения 1 && 0 && 2
остановится после первого И &&
, т.к. понятно что результат будет ложным (ноль интерпретируется как false
).
Результатом логического оператора служит последнее значение в коротком цикле вычислений.
Можно сказать и по-другому: значения хоть и интерпретируются как логические, но то, которое в итоге определяет результат, возвращается без преобразования.
Например:
1 |
alert( 0 && 1 ); // 0 |
2 |
alert( 1 && 2 && 3 ); // 3 |
3 |
alert( null || 1 || 2 ); // 1 |
Подробнее: Логические операторы.
01 |
// 1 |
02 |
while (условие) { |
03 |
... |
04 |
} |
05 |
06 |
// 2 |
07 |
do { |
08 |
... |
09 |
} while (условие); |
10 |
11 |
// 3 |
12 |
for ( var i = 0; i < 10; i++) { |
13 |
... |
14 |
} |
break/continue
для выхода из цикла/перехода на следующую итерацию.
Для выхода одновременно из нескольких уровней цикла можно задать метку.
Синтаксис: «имя_метки:
», ставится она только перед циклами и блоками, например:
1 |
outer: |
2 |
for (;;) { |
3 |
... |
4 |
for (;;) { |
5 |
... |
6 |
break outer; |
7 |
} |
8 |
} |
Переход на метку возможен только изнутри цикла, и только на внешний блок по отношению к данному циклу. В произвольное место программы перейти нельзя.
Подробнее: Директивы break и continue.
switch
При сравнениях в конструкции switch
используется оператор ===
.
Например:
01 |
var age = prompt( 'Ваш возраст' , 18); |
02 |
03 |
switch (age) { |
04 |
case 18: |
05 |
alert( 'Никогда не сработает' ); // результат prompt - строка, а не число |
06 |
07 |
case "18" : // вот так - сработает! |
08 |
alert( 'Вам 18 лет!' ); |
09 |
break ; |
10 |
11 |
default : |
12 |
alert( 'Любое значение, не совпавшее с case' ); |
13 |
} |
Подробнее: Конструкция switch.
Синтаксис функций в JavaScript:
1 |
// function имя(список параметров) { тело } |
2 |
function sum(a, b) { |
3 |
var result = a + b; |
4 |
5 |
return result; |
6 |
} |
sum
— имя функции, ограничения на имя функции — те же, что и на имя переменной.var
внутри функции, видны везде внутри этой функции, блокиif
, for
и т.п. на видимость не влияют.a
, b
, за исключением объектов, которые передаются «по ссылке», их мы подробно обсудим в главеОбъекты как ассоциативные массивы.return
считается возвращающей undefined
. Вызов return
без значения также возвращает undefined
:
1 |
function f() { } |
2 |
alert( f() ); // undefined |
Подробнее: Функции.
Все значения в JavaScript, за исключением null
и undefined
, содержат набор вспомогательных функций и значений, доступных «через точку».
Такие функции называют «методами», а значения — «свойствами».
Например:
1 |
alert( "Привет, мир!" .length ); // 12 |
Еще у строк есть метод toUpperCase()
, который возвращает строку в верхнем регистре:
1 |
var hello = "Привет, мир!" ; |
2 |
3 |
alert( hello.toUpperCase() ); // "ПРИВЕТ, МИР!" |
Подробнее: Методы и свойства.
В этой главе мы повторили основные особенности JavaScript, знание которых необходимо для обхода большинства «граблей», да и просто для написания хорошего кода.
К сожалению, в одной статье не просто дать все знания про всё вместе. Но я - старался. Если ты проявишь интерес к раскрытию подробностей,я обязательно напишу продолжение! Надеюсь, что теперь ты понял что такое всё вместе, особенности javascript и для чего все это нужно, а если не понял, или есть замечания, то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории Выполнение скриптов на стороне клиента JavaScript, jqvery, JS фреймворки (Frontend)
Комментарии
Оставить комментарий
Выполнение скриптов на стороне клиента JavaScript, jqvery, JS фреймворки (Frontend)
Термины: Выполнение скриптов на стороне клиента JavaScript, jqvery, JS фреймворки (Frontend)