Вывод
Дневник цели

Закончила. learn.javascript.ru - очень хороший онлайн-учебник. Вела конспект. Теперь нужно систематизировать знания и проработать eloquent.js/

Дима, спасибо за совет! Но я умею программировать:) Читайте описание: у меня 2 года опыта в java;)

Уроки CSS: препроцессор SASS больше не нужен
Математические вычисления
border{
padding: calc(1rem-5px) calc(1rem+5px);
}
Переменные в css (не поддерж. в IE, в старых брауз. андроид, опера мини и тд. см. https://caniuse.com/#search=var)
//объявление
:root {
--first-var:#eee;
}
//использование. red- значение по умолч.
body {
background-color: var(--first-var, red);
}
Миксины (поддерживаются только хромом и только в эксперемнт. режиме : chrome://flags/#enable-experimental-web-platform-features)
//объявление
:root {
--first-mix:{
background:blue;
padding: 10px;
color: red;
}
}
//использование
body {
@apply: --first-mix;
}

ES6. Современный JavaScript
Урок 7. Современный JavaScript (ES6) - Деструктуризация параметров
Если нам нужно передать свойства объекта в функцию, то мы можем применить деструктуризацию, чтобы сократить код
const user = {
firstName: "Арсен",
lastName: "Аргустамян",
id: 1
};
//ES5
function printUserInfo(user) {
const firstName = user.firstName;
const lastName= user.lastName;
const id= user.id;
console.log(id, firstName, lastName);
}
//ES6
function printUserInfo(firstName: name, lastName, id) {
console.log(id, name, lastName);
}
printUserInfo(user);

ES6. Современный JavaScript
Урок 6. Современный JavaScript (ES6) - Стрелочные функции
const sumArrowFunc = (a, b) => {
return a+b;
};
//Еще одна особенность стрелочных функций - они сохраняют контекст
var user = {
firstName: "Вася",
sayHi: function() { setTimeout(
function(){this.firstName},
1000);
}
};

ES6. Современный JavaScript
Урок 5. Современный JavaScript (ES6) - Параметры по умолчанию
Описываем поведение когда функцию с аргуметами вызвали без аргументов
//ES5
function sumES5(a, b) {
a = a || 0;
b = b || 0;
return a + b;
}
//ES6
function sumES6(a = 0, b = 0) {
return a + b;
}
const sumRes = sumES6();
//->0
const sumRes = sumES6(2, 2);
//->4

ES6. Современный JavaScript
Урок 4. Современный JavaScript (ES6) - String Template и интерполяция строк
const text = 'text span';
//Было
const html = '<div>\n<p>\n<span>' + text + '</span>\n</p>\n</div>';
//String Template + интерполяция ${text}
const html2 = `<div>
<p>
<span>${text}</span>
</p>
</div>`;
Т.е. во 2-ом случае сохраняется пользовательское редактирование(переносы, табы и тд), а переменные вставляются при помощи ${n}

ES6. Современный JavaScript
Урок 1. Современный JavaScript (ES6) - let, const
var
console.log(b);
var b = 10;
//->undefined
(явление хостинг - объявленные через var переменные создаются в начале скрипта) т.е. это тоже самое, что
var b = undefined;
console.log(b);
b = 10;
//->undefined
__________________________________
let
(явление хостинг отсутствует)
1.
console.log(b);
let b = 10;
//->is not defined (ошибка)
2. Локальная область видимости (при объявлении с var только перемен, объявленные внутри function имеют локальн. обл. видимости)
{
let a = 5;
}
console.log(a);
//->is not defined (ошибка)
3. Переопределение переменных.
var a = 5;
var a = 10;
//->all right(без ошибки, т.к. хостинг)
let b = 5;
let b = 10;
////->b is already defined(ошибка)
__________________________________
const
(обычные константы)
1.
const a = 5;
a = 10;
//->a is const (ошибка)
2. Объекты-константы
const obj = {
name: "Арсен";
};
obj = {};
//->obj is const (ошибка)
obj.name = "Иван";
//->all right(без ошибки, т.е св-ва объекта-константы мы можем менять без проблем)
Урок 2. Современный JavaScript (ES6) - Деструктуризация
Деструктуризация (destructuring assignment) – это особый синтаксис присваивания, при котором можно присвоить массив или объект сразу нескольким переменным, разбив его на части.
1. Массивы
const array = [1, 2, 3, 4];
//ES5
const one = array[0];
const two = array[1];
console.log(one, two);
//ES6
cost [ one, two, , four] = array;
console.log(one);
console.log(two);
console.log(four);
2. Объекты
const user = {
firstName: "Арсен",
lastName: "Аргустамян",
address: {
city:"Moscow",
country:"Russia"
}
};
//ES5
const firstName = user.firstName;
const lastName = user.lastName;
console.log(firstName);
console.log(lastName);
//ES6
const{firstName, lastName} = user;
console.log(firstName);
console.log(lastName);
//если сво-во тоже объект
const{address:{city, country}} = user;
console.log(city);
console.log(country);
//если хоти создать переменную с именем, отличным от имени свойства
const{firstName: name} = user;
console.log{name};
Урок 3. Современный JavaScript (ES6) - rest и spread операторы
Spread - Оператор расширения позволяет расширять выражения в тех местах, где предусмотрено использование нескольких аргументов (при вызовах функции) или ожидается несколько элементов (для массивов).
function foo(a, b, c) {
console.log(a, b, c);
}
const numbers = [1, 2, 3];
foo(...numbers);
//->1, 2, 3
__________________________________
Rest - cинтаксис оставшихся параметров функции позволяет представлять неограниченное множество аргументов в виде массива.
function foo(a, ...rest) {
console.log(rest);
}
foo(1, 2, 3);
//->2, 3