Link Search Menu Expand Document
Предметный указатель
  1. Базовая информация
    1. Типы данных
    2. Условия
      1. Тернарные операторы
      2. Switch
    3. Циклы
    4. Функции
    5. Методы
      1. Работа со строками
      2. Работа с числами
    6. Callback функции
    7. Объекты, деструктуризация объектов из ES6
      1. Методы для работы с объектами
    8. Массивы и псевдомассивы
    9. Передача по ссылке или по значению
    10. ООП
    11. Динамическая типизация
    12. Выполнение функций при выполнении действия

Базовая информация

Типы данных

Простые типы:

  • Числа;
  • Строки;
  • Логические типы;
  • null;
  • underfined;
  • Symbol;
  • BigInt.

Объекты:

  • Массивы;
  • Функции;
  • Объект Даты;
  • Регулярные выражения;
  • Ошибки.

Условия

'use strict';

if (4 == 9){
    console.log('Ok!');
} else {
    console.log('Error');
}

const num = 50;

if (num < 49) {
    console.log('Error');
} else if (num > 100) {
    console.log('Too much');
} else {
    console.log('Ok!');
}

Тернарные операторы

(num === 50) ? console.log('Ok!') : console.log('Error');

Switch

switch (num) {
    case 49:
        console.log('Not right');
        break;
    case 100:
        console.log('Not right');
        break;
    case 50:
        console.log('OK!');
        break;
    default:
        console.log('Not now');
        break;
}

Циклы

'use strict';

let num = 50;

while (num < 55) {
    console.log(num);
    num++;
}

do {
    console.log(num);
    num++;
}
while (num < 60);

for (let i = 1; i < 8; i++) {
    console.log(i);
}

for (let i = 1; i < 20; i++) {
    if (i == 6 ){
        // break; // Прерывание цикла 
        continue; // Пропуск шага в цикле
    }
    console.log(i);
}

Функции

'use strict';

let num = 20;

function showFirstMessage(text) {
    console.log(text);
    num = 10;
}

showFirstMessage('Hello, JS!');
console.log(num);

function calc(a, b) {
    return (a + b);
}

console.log(calc(10,12));

function ret() {
    let num = 50;
    return num;
}

const anotherNum = ret();
console.log(anotherNum);

const logger = function() {
    // Данную функццию можно использовать только после её объявления
    console.log('Hello, function expression!');
};

logger();

// Можно записывать без фигурных скобок
// const newCalc = (a,b) => a + b;

const newCalc = (a,b) => { 
    return a + b; 
};

console.log(newCalc(2,3));

Методы

Работа со строками

'use strict';

console.dir(Number);  // Посмотреть все методы объекта Number

const str = "test";

console.log(str.toUpperCase());
console.log(str[2]);

const fruit = "Some fruit";

console.log(fruit.indexOf('fruit'));  // Получим 5

const logg = "Hello, World";

const startWorld = logg.indexOf('World');
const lenLogg = logg.length;

console.log(logg.slice(startWorld, lenLogg));  // Отрицательные значения отсчитываются с конца строки

console.log(logg.substr(startWorld, 2));  // Вторым аргументом указываем сколько символов нам необходимо вырезать

Работа с числами

Для работы с числами используется стандартная бибблиотека Math

const num = 2.2;
console.log(Math.round(num));

const test = "12.2px";
console.log(parseInt(test));  // Можно также использовать parseFloat

Callback функции

'use strict';

function learnJS(lang, callback) {
    console.log(`Я учу: ${lang}`);
    callback();
}

function done() {
    console.log('Я прошел этот урок');
}

learnJS('JavaScript', done);

Объекты, деструктуризация объектов из ES6

'use strict';

const options = {
    name: 'test',
    width: 1024,
    height: 1024,
    colors: {
        border: 'black',
        bg: 'red'
    },
    makeTest: function(){                   // Создаем метод в объекте
        console.log('Test');
    }
};

// Деструктуризация
const {border, bg} = options.colors;
console.log(border);

console.log(Object.keys(options).length);   // !!! Считаем количество элементов в объекте

options.makeTest();


// console.log(options.name);

// delete options.name;                     // удаляем элемент

// console.log(options.name);

// Перебираем все свойства объекта

let counter = 0;
for (let key in options) {
    if (typeof (options[key]) === 'object') {
        for (let i in options[key]) {
            console.log(`Свойство ${i} имеет значение ${options[key][i]}`);
            counter++;
        }
    } else {
        console.log(`Свойство ${key} имеет значение ${options[key]}`);
        counter++;
    }

}

console.log(counter);

Методы для работы с объектами

Метод entries – преобразование объекта в массив массивов

const obj = {
    ivan: 'persone',
    ann: 'persone',
    dog: 'animal',
    cat: 'animal'
};
const newArr = Object.entries(obj);
console.log(newArr);
[
  [ 'ivan', 'persone' ],
  [ 'ann', 'persone' ],
  [ 'dog', 'animal' ],
  [ 'cat', 'animal' ]
]

Object.fromEntries(data) – Преобразует массив обратнов объект

Массивы и псевдомассивы

'use strict';

// const arr = [1, 2, 3, 6, 8];

// // arr.pop();                          // Удаляем последний элемент из массива
// arr.push(10);                          // Добавляем элемент в конец масиива

// // console.log(arr);

// for (let n in arr) {
//     console.log(arr[n]);
// }

// for (let value of arr) {
//     console.log(value);
// }

// arr.forEach(function (item, id, arr) {   // Перебираем все элементы массива
//     console.log(`${id}: ${item} внутри масиива ${arr}`);
// });


// Разбиваем строку на массив
const str = prompt("", "");
const products = str.split(", ");
console.log(products);

// Сортировка массива (всегда сортирует как строки, 
// но мы можем указать callback функцию которая укажет как правильно сортировать)
products.sort();

// Объединяем массив в строку
console.log(products.join('; '));


const numberArr = [2, 13, 26, 8, 10];
numberArr.sort(compareNum);
console.log(numberArr);

function compareNum(a, b) {
    return a - b;
}

Передача по ссылке или по значению

'use strict';

let a = 5,
    b = a;

b = b + 5;

console.log(b);
console.log(a);

const obj = {
    a: 5,
    b: 1
};

const copy = obj;  // Ссылка

copy.a = 10;

console.log(copy);
console.log(obj);

function copyFunc(mainObj){
    let objCopy = {};

    let key;
    for(key in mainObj){
        objCopy[key] = mainObj[key];
    }

    return objCopy;
}

const numbers = {
    a: 2,
    b: 5,
    c: {
        x: 7,
        y: 4
    }
};

const newNumbers = copyFunc(numbers);

newNumbers.a = 10;
newNumbers.c.x = 10;

console.log(newNumbers);
console.log(numbers);

const add = {
    d: 17,
    e: 20
};

console.log(Object.assign(numbers, add));  // Соединение двух объектов
const clone = Object.assign({}, add);

clone.d = 20;

console.log(add);
console.log(clone);

const oldArray = ['a', 'b', 'c'];
const newArray = oldArray.slice();  // Копировани массива

newArray['1'] = 'asdasdasdasdad';

console.log(oldArray);
console.log(newArray);

const   video = ['youtube', 'vimeo', 'rutube'],
        blogs = ['wordpress', 'livejournal', 'blogger'],
        internet = [...video, ...blogs, 'vk', 'facebook'];  // Spread – оператор разворота

console.log(internet);

function log(a, b ,c) {
    console.log(a);
    console.log(b);
    console.log(c);
}

const num = [2, 5, 7];

log(...num);

const array = ['a', 'b'];

const newAarray = [...array];

const q = {
    one: 1,
    two: 2
};

// const newObj = {...q};

// log(newObj);

ООП

С примером наследования

'use strict';

let str = 'some';
let strObj = new String(str);

console.log(typeof (str));
console.log(typeof (strObj));


console.dir([1, 2, 3]);

const solder = {
    helth: 400,
    armor: 100,
    sayHello: function(){
        console.log('Hello');
    }
};

const john = {
    helth: 100
};

// Устаревший формат

// john.__proto__ = solder;

// john.sayHello();


// Актуальный формат

Object.setPrototypeOf(john, solder);

john.sayHello();

const smith = Object.create(solder);

smith.sayHello();

Динамическая типизация

Примеры преобразования типов

'use strict';

// To String

// 1)
// Таким способом редко пользуются

console.log(typeof (String(null)));
console.log(typeof (String(4)));

// 2)
// Конкатинация

console.log(typeof (5 + ''));

const num = 5;

console.log("https//vk.com/catalog/" + num);

const fontSize = 26 + 'px';

// To Number

// 1)
console.log(typeof (Number('4')));

// 2)
// Унарный оператор +

console.log(typeof (+'5'));

// 3)
console.log(typeof (Number(parseInt("15px", 10))));

let answ = +prompt("Hello", "");

// To boolean

// Всегда будет False: 0, '', null, underfined, NaN
// Все остальное True

// 1)
let switcher = null;

if (switcher) {
    console.log('Working...');
}

// 2)
console.log(typeof (Boolean('4')));

// 3)
console.log(typeof (!!"234567"));

Выполнение функций при выполнении действия

window.addEventListener('scroll', showModalByScroll);
window.removeEventListener('scroll', showModalByScroll);

В данном случае функция вызывается без скобок

Также выполнить действие можно таким образом:

window.addEventListener('scroll', (event) => {
    console.log(event.target);
});