Версии JavaSript и совместимость с браузерами
Правильное название языка JavaScript - ECMAScript в соответствии со стандартом ECMA. Текущая версия языка, поддерживаемая всеми основными браузерами ECMAScript 2015 или ES6. При работе с различными JS библиотеками и фреймворками, такими как ReactJS и Angular, используют специальные пакеты инструментов (Babel, Webpack) для преобразования кода, написанного в новых версиях JavaScript ES6 в более "безопасные" версии (ES5 и т.д.). Так обеспечивается полная совместимость кода для всех устройств и браузеров.
Основы основ
Код выполняется внутри html-документа в теге
<script>[код]</script>
Можно подключить отдельный javascript файл, часто его добавляют либо внутри тега <head>, либо внизу страницы перед закрывающим тэгом </body>.
<script src="/js/script.js"></script>
Для комментирования используется два вида комментариев, однострочный и многострочный:
// это однострочный комментарий
/* первая строка многострочного комментария
вторая строка многострочного комментария */
Строгий режим "use strict" включается в начале js-кода документа и используется для включения изменений версии ES5, рекомендуется для использования.
Для задания переменной используется ключевое слово let, устаревший вариант var.
let a = "text";
var x;
Для создания константы используется const. Константу нельзя изменять, но если массив задан как константа, то его члены можно изменять.
const pi = 3.14;
Типы данных в JavaScript
JavaScript поддерживает динамическую типизацию, т.е. переменные могут содержать в разные моменты времени данные разных типов.
Числовой тип данных (number).
Строки, заключаются в кавычки. Обратные кавычки позволяют встраивать выражения в строку, например:
let name = "World";
alert(`Hello, ${name}!`); // Hello, World!
Логический тип (boolean) переменных, принимающих только значения true и false.
Отдельный тип null.
Отдельный тип undefined.
Тип объект (object).
Тип символ (symbol).
Оператор typeof возвращает тип переменной.
typeof true //boolean
Функции преобразования типов
String(value)
Number(value)
Boolean(value)
Операторы
+ сложение, сложение строк, унарный + (приводит к числовому типу),
- вычитание,
* умножение,
/ деление,
= присваивание (возвращает значение),
% остаток от деления,
** возведение в степень,
++/-- инкремент/декремент, постфикс и префикс формы,
побитовые операторы
совмещенные +=, -=, *=, /=
оператор запятая ,
сравнение >,<,>=,<=,==,=== (строгое равенство),!=,!==
логические операторы || или, && и, ! не.
Модальные окна
alert(message)
prompt(title,[default])
confirm(question)
Условные операторы
if (условие) {действия} elseif (еще условие){действия} else {действие}
тернарный let res = условие ? значение 1 : значение 2;
Конструкция switch
switch(x) {
case 'value1':
...
[break]
case 'value2':
....
[break]
default:
...
[break]
Циклы
while (условие) {действия}
do {действия} while (условие)
for ( let i = 0; i < 4; i++) {действия}
break прерывание цикла
continue переход к следующей итерации
Функции
function имя(параметры){
тело
return x
}
вызов функции
имя([параметры, пар1 = значение параметра по умолчанию])
Другой способ задания функции - функциональное выражение (functional expression).
let doSomething = function() {тело}
Если вызвать функцию по имени без скобок, то выведет код функции.
стрелочные функции let func = (arg1, arg2....) => expression
Объекты JavaScript
Создание пустого объекта
let user = new Object(); или let user = {};
Создание объекта с заполнением значениями
let user = { key1: value1, key2: value2 }
К значению обращаемся через точку
alert(user.key1)
или также как к членам массива alert(user["key1"])
Можно добавить свойство
user.key3 = true
Можно удалить свойство
delete user.key1;
Используйте квадратные скобки для создания вычисляемого свойства объекта
let fieldName = prompt("Input name", "name");
let contact = {[fieldName]:"Alex"}
console.log(contact.name); // Alex
Если имя свойства совпадает с именем переменной, то имя свойства можно опустить
{ firstName, surName }
Два способа проверки существования свойства:
Обращение в несуществующему свойству возвращает undefined
"key" in object // оператор in возвращает true или false
Цикл for... in
for (let key in object) ...
Метод Object.asign
Объекты присваиваются и копируются по ссылке, т.е. две переменных могут содержать ссылку на один объект. Чтобы создать клон объекта, нужно создать новый объект и копировать в него все свойства старого объекта (напр. в цикле for..in).
Object.assign(dest, [src1, src2...]) // Копирует свойства src.. в dest и возвращает dest.
Можно использовать для клонирования
let clonedObject = Object.assign({}, originalObject);