Skip to content

elinakudiiarova/JSlessons

Repository files navigation

Определения

Выражение - это кусочек кода, который вычисляется в какое-то значение. Их можно использовать везде, где ожидается какое-то значение. Примеры выражений:

  • константы
console.log(50); // 50 -константа(не меняется)
  • чтение значения переменной
const a = 6; 
const b = a; // а - выражение
  • математические и логические операции
console.log(5+6); // 5+6 - выражение
  • вызов функции, которая возвращает значение
function add(x, y){
    const p =x*y;
    const s = x + y;
    return s;
} 

console.log(add(5, 6)); // add(5, 6) - выражение

Блок кода - это несколько инструкций, сгрупированных вместе. Если блок кода состоит из нескольких строк, то он должен заключаться в фигурные скобки.

1. Переменные

Переменные - это способ дать имя значению. Из переменной можно прочитать значение, и в переменную можно записать значение.

В JS переменные задаются так:

var a; // объявление переменной а. Сейчас так не делают.
let b; // объявление переменной b, которой можно присваивать новое значение.
const c = 10; // объявление переменной с и присваивание ей значения. Больше этой переменной присваивать значений нельзя.

В переменную можно записать значение:

let a;
a = 10;
a = 20;

Из переменной можно прочитать значение:

let a = 10;
console.log(a); // выводим значение а на консоль( чтоб было видно в консоли).
let b = a; // переменной можно присвоить значение другой переменной.

С переменной можно обращаться так же, как и со значением:

let a = 10;
let b = a*5; // b == 50

Правила именования переменных:

  • Имя переменной должно начинаться с буквы или знака подчеркивания
let _ao_ = 10;
let ero; 
  • Имя переменной может содержать буквы, цифры, знак подчеркивания
let _3f6_;
let a3456;
let __ee_5 = 34;
  • Переменные обычно называют с маленькой буквы, если название переменной включает несколько слов,то каждение слово начинается с большой буквы(не включая заглавную)
let smoke;
let smokingIsBadForOurLife;

2. Функции

Функция - это кусочек кода, у которого есть имя и ноль или больше параметров. Функция объявляется один раз, и потом может быть вызвана несколько раз, возможно с разными аргументами.

Функция может возвращать значение(а может и нет).

2.1 Объявление функции

function add(x, y){
    return x + y;
}

Объявление функции начинается с ключевого слова function, далее через пробел идет имя функции, круглые скобки, внутри скобок список параметров через запятую и тело функции, заключенное в фигурные скобки. Внутри тела функции может использоваться ключевое слово return, при помощи которого из функции возвращается значение.

В теле функции можно писать практически любой код: объявлять переменные, вызывать другие функции, писать циклы, условия, даже объявлять другие функции.

Правила для имен функции и параметров функции такие же, как и для переменных.

Примеры:

function printSum(p, o){
    console.log(p+o)
}
function add(u, i, y){
    return (u+i)*y;
}
function add(u, i, y){
   const s = u+i;
   console.log(s)
    return s*y;
}

2.2 Вызов функции

Функция вызывается по имени. После имени обязательно указываются круглые скобки. Если у функции есть аргументы, они перечисляются внутри круглых скобок через запятую в том же порядке, как и параметры функции.

Параметры - в объявлении функции, аргументы - значения параметров при вызове функции.

Примеры:

function add(x, y){
    return x + y;
}

const s = add(5, 7)
function print(x){
    console.log(x);
}

function square(p){
    return p*p;
}

3. Литералы

Литерал - это значение определенного типа, записанное в коде.

Примеры:

  • литерал числа:
сonst a = 5.4; // дробные числа пишуться всегда с точкой
  • литерал строки, можно использовать двойные, одинарные или обратные кавычки.
const a = "Hello, I am Elya."; 
const b = 'I live in Kharkiv.';
const c = `I am 15 years old.`;
const d = `Info about me: ${a} ${b} ${c}`; // строки подстановки, можно вставлять значения выражения внутрь строки
  • литерал логического типа:
const yes = true;
const no = false; 
  • литерал объекта

  • литерал массива

  • литерал отсутствующего значения undefined. Это значение объявленой переменной, которой не присвоено значение:

let a; // a === undefined
  • литерал пустого значения null

4. Логические выражения

Логическое выражение - это выражение сравнения двух значений.

  • операторы сравнения
console.log(1 > 2); // false
console.log(2*2 >= 1); // true 
console.log("Lama" === ("La" + "ma")); // true
console.log("Hi" !== "OMG"); // true
  • логические операторы

&& - логическое И.

|| - логическое ИЛИ.

! - логическое НЕ.

console.log(true && true); // true
console.log(false || true); // true
console.log((2*5 < 10) || (3*6 === 20)); // false
console.log(
    (3*3 === 10) || 
    (("Cafe" === "Sweeter") && (17 - 10 === 7))
); // false

5. Условный оператор

Условный оператор позволяет выполнять блок кода, если какое-то условие истинно. Условный оператор имеет вид:

if(condition) {
    // condition is true
} else {
    // condition is false
}

condition - выражение, которое вычисляется в true или false

блок else не обязателен

6. Циклы

Цикл позволяет выполнить блок кода несколько раз. Циклы бывают двух типов: цикл с шагом и цикл с условием. Цикл с шагом позволяет выполнить блок кода заданное количество раз; цикл с условием позволяет выполнять блок кода, пока определенное условие истинно.

6.1 Цикл с условием

while(condition){
    // код
}

Примеры:

  • вывести в консоль числа от 1 до 10
let a = 1;
while(a <= 10){
    console.log(a);
    a = a + 1;
}

6.2 Цикл с шагом

Цикл с шагом позволяет выполнить тело цикла определенное количество раз. Цикл с шагом используется, когда количество повторений известно заранее, или может быть вычислено.

for (
// инициализация цикла: объявление переменных и установка их значений
; 
// условия завершение цикла: сравнение переменной с каким-то значением
;
// шаг цикла: изменение значения переменной
){
      //code
} 

Пример:

  • вывести в консоль числа от 1 до 10
for(let i = 1; i <= 10; i = i + 1){
    console.log(i);
}
  • вывести в консоль числа от 1 до 10 с шагом 2
for(let y = 1; y <= 10; y = y + 2){
    console.log(y);
}

6.3 Оператор break и continue

Директива break дает нам возможность прервать цикл без проверки условий в любой момент. Далее оператор передаёт управление на строку за телом.

Директива continue также прерывает выполнение цикла, но не всего, а только той части, которая находиться после этого слова.

7. Объекты и массивы

Объекты и массивы позволяют объединить несколько значенийм в группу. С этой группой можно обращаться, как с одним значением: сохранять в переменную, передавать в функцию как аргумент, возвращать из функции. В то же время, можно получить доступ к каждому значению.

Объект группирует несколько значений в одно; каждое значение в объекте будет доступно по имени. Эти значения называются полями или свойствами объекта.

Массив группирует несколько значений в список; каждое из значений будет доступно по порядковому номеру, который называется индекс. Первое значение в массиве будет иметь индекс, равный нулю.

В полях объекта и в элементах массива могут лежать значения любого типа: примитивные значения (числа, логические значения, null, undefined), другие объекты, другие массивы и функции.

7.1 Работа с объектами

  • задание объекта при помощи литерала объекта
const person = {
    name: `Elya`, 
    age: 15
};
console.log(person.name); // Elya
console.log(person.age); // 15
person.age = 30;
console.log(person.age); // 30 

console.log(person.dog); // undefined
  • создание пустого объекта
const m = {}; 
  • создание объекта путем задания свойств:
const person = {};
person.name = `Elya`;
person.age = 15;
  • задание вложенных объектов
const person = {
    name: `Elya`,
    age: 12,
    dog: {
        "Year of birth": 2003,
        name: `William`
    }
};
console.log(person.dog.name) // William
console.log(person.dog["Year of birth"]) // 2003
  • функция как поле объекта
const person = {
    name: `Elya`,
    sayhi: function (name){
        console.log(`Hi, ${name}, I am ${this.name}`)
    }
}; 
person.sayhi(`Katya`) // Hi, Katya, I am Elya

7.2 Работа с массивами(arrays)

Массив - это специальный объект, который содержит в себе упорядоченный набор элементов, позволяет добавлять/удалять элементы, а также получать к ним доступ, используя порядковый номер элемента, который называется индекс. Индекс первого элемента равен 0. В массиве могут лежать любые значения: примитивы,объекты, другие массивы, функции, null и undefined. Также в массиве могут лежать разные значения с разными индексами.

  • литерал массива
const a = []; // empty array
const b = [3, 2, 1]; // array of numbers
const c = [`F`, `U`, `K`] // array of strings
const d = [{
    name: `jim`,
    age: 10
}, {
    rate: 4,
    hair: `blue`
}]; // array of objects
const e = [1, `Hi`, {
    age: 14
}]; // array of vaiues of different types
const f = [[1, 2], [`Hi`, `Kara`]]; // array of arrays
  • чтение и запись элемента массива. Для получения доступа к элементу массива используется оператор [ ]
const f = [1, 3];
console.log(f[0]) // выведет 1
f[1] = 10 // f - [1, 10]
  • получение длины массива - используется свойство массива length
const g = [`H`, `A`, `Y`];
console.log(g.length);

8. Области видимости

Область видимости - это область внутри программы, в которой доступны определенные сущности: переменные, функции и другие.

Какие бывают области видимости:

  • тело функции(область внутри функции): в ней доступны

    • параметры этой функции
    • переменные, объявленные внутри функции
    • функции, объявленные внутри функции
    • переменные и функции из внешней области видимости В ней не доступны переменные, функции и др., объявленные в других функциях.
  • блочная область видимости - это область между открывающейся и закрывающейся фигруными скобками. Переменные, объявленные при помощи let и const доступны только в блочной области видимости, где они объявлены.

  • глобальная область видимости : переменные и функции оттуда доступны в любом месте программы. Например, в глобальной области видимости находится объект console.

9. Алгоритмы

Алгоритм - это комбинация в определенной последовательности простых действий, для выполнения сложного действия.

В программировании алгоритм состоит из инструкций: объявлений переменных, вызова функции, циклов, условий и т.д.

10. Стрелочные функции

Стрелочные функции - это другой, более короткий, способ объявления функции. Они часто используются, когда нужно передать функцию как параметр. У них не может быть имени, но их можно присвоить переменной.

const sum = (a, b) => a + b;

Для объявления стрелочной функции мы используем круглые скобки со списком параметров (если функция не принимает параметров, то скобки все равно нужны). После этого идет толстая стрелка => и тело ф-ии. Тело ф-ии может быть как и у обычной ф-ии, тогда оно заключает в фигурные скобки. Если же стрелочная функция состоит из одного выражения, то можно применять сокращенный способ. В этом случае фигурные скобки не нужны, а выражение становиться возвращаемым результатом функции.

const sum = (a, b) => a + b; // shorthand syntax
const sum1 = (a,b) => {
    return a + b;
}; // full syntax

Если стрелочная функция в сокр. форме возвращает литерал объекта, то литера объекта дожен быть заключен в круглые скобки.

const person = () => ({
    name: `Elya`, 
    age: 15
});

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

Для работы со строками у объекта строки есть много методов и свойств:

// длина строки 
 "Lets go".length // возвращает кол-во символов строки

 // получить символ на позиции (по индексу)
"Bye"[0] 

// получить подстроку из строки
"Lalalyps".substring(2,4) // 2 - индекс, 4 - длина

// преобразовать строку в верхний или нижний регистр
"Good morning".toLower()
"Good night".toUpper()

// разделить строку на массив строк по определенному символу
"Kate is living city.".split(" ") // ["Kate", "is", "living", "city." ]

// объединить массив строк в одну строку
["Kate", "is", "living", "city." ].join(" ") // "Kate is living city."

// проверить входит ли одна строка в другую

"Helga is in fight.".includes("ig") // true

// найти позицию подстроки в строке
"Helga is in fight.".indexOf("is") // index "i" with is / 6 ( если нет позиции, то выводит -1)

// удалить пробельные символы с начала строки, с конца строки или с обех сторон
" Hi, I am Elya. ".trim() // с обех сторон
" Hi, I am Elya. ".trimEnd() // с конца
" Hi, I am Elya. ".trimStart() // с начала  

13. Импорт и экспорт

Большое приложение обычно разбивается на несколько модулей. Это делается для уменьшения сложности приложения: при использовании модуля нужно знать только его интерфейс( функции, классы, объекты, доступные пользователю модуля), а реализация, которая обычно более сложная и объемная, остаётся скрытой внутри модуля.

Модули, которые можно переиспользовать, называются библиотеками, или пакетами. Пакеты можно устанавливать из интернета или из папки. Пакеты node.js хранятся и публикуются на специальных сайтах, называемых реестрами. Основной реестр - это https://npmjs.com

Для установки пакетов используется утилита командной строки npm. Она поставляется вместе с node.js.

13.1 Экспорт

Экспортировать можно функции, классы, переменные. Для экспорта нужно модифицировать или присвоить специальный глобальный объект module.exports.

Можно либо присвоить этому свойству новое значение, либо модифицировать свойства этого объекта.

13.2 Импорт

Для импортирования используется глобальная функция require. Она принимает строку, содержащую либо путь к файлу, либо к папке с модулем, либо имя пакета.

Если путь указан как относительный, то require будет вычислять путь относительно текущего файла.

Если путь указан как имя (без . или / в начале), то require будет искать установленный пакет.

require возвращает объект module.exports.

Если путь, переданный в require, указывает на папку, то require ищет и загружает файл index.js.

// math.js
const pi = 3.14;
function add(x, y){
    return x + y;
}
module.exports.pi = pi;
module.exports.addnumbers = add;

// calc.js
const math = require("./math.js");
console.log(math.pi);
console.log(math.addnumbers(5,4));

Releases

No releases published

Packages

No packages published