ПРИМИТИВНЫЕ ТИПЫ Flashcards

1
Q

Примитивные типы

A

string (строка)

boolean (логический)-true or false -два значения .

Number :0.1 20 0 2,1

Null -это я сам ставлю переменой неопределенное значения и иногда это может пригодится
Undefined -неопределенный
Symbol -можно создавать уникальное значение !

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Ссылочный тип
Примеры

A

Object -объект
0X3151>(
A:10
B-True
)
Это объект и в таком случае переменная содержит ссылку на данный объект со свойствами

0x7213> [1,2,3]
Это массив и здесь также переменная содержит массив

Может быть -две разных переменных , которые содержат один и тот же объект

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Слова вызывающие переменные

A

Const -объявление с прививанием
Let - объявление переменной , которую можно в дальнейшем изменять и корректировать

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Добавление нового свойства в объект ?
Пример

A

copy0fA.c= ‘abc’
Точка дает доступ к объекту !
И даже если это свойство отсутствует в объекте -оно будет создано !

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Статическая типизация

A

String a= ‘abc’
int b=10
b=‘xyz’//Error
Это пример статической типизации -когда при указывание переменой также указывается тип этой переменной (string) integer-целое число и это тоже факт !

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

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

A

a= ‘abc’//String
a=10 //Number
Объявлять данную переменную необходимо при помощи let -т.к строку необходимо менять в будущем.
JavaScript динамически типизированный язык , поэтому здесь ярко выражено , что переменная a может меняться .

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

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

A

function a() {
console.log (Hey there’)
}
a() // ‘Hey there’
a = 10
a() //Uncaught TypeError: a is not a function
Вызов функции благодаря ()
Где a=10 - я изменил переменную и тем самым когда вызвал ее получил ошибку т.к это уже ни функция !
Const -может позволять избежать проблемы связанные с динамической типизацией !

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Стрелочная функция

A

const.log ( ‘Hey there’)
a() // ‘Hey there’
a=10 //TypeError:
Assignment to constant variable
a ()

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Объект ?

A

Объект имеет свойства , а если свойство имеет функцию , то называется метод !
Объект это ссылочный тип и переменную , которую я присваиваю содержит ссылку !
Объект записывается между фигурными скобками !
Между свойствами обязательно запятые .
Лучше объявлять Const , если я собираюсь делать переменную с объектом в значении !

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Объект и получение свойств из объекта ?

A

Const myCity= {
city : ‘New York’,
popular:true,
country: ‘USA’
}
Чтобы получить какое-то свойство из объекта нужно .
console.log (my City.city) -к примеру и интерпретатор даст
// ‘New York’
Также можно получить
console.log (myCity.popular)
// true

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Используя точечную запись изменить свойства объекта и даже если const работает

A

const myCity= {
city: ‘New York’
myCity. city = ‘Las Vegas ‘
console.log (myCity)
// {city: ‘Las Vegas’ }

Const касается переменной , а ни ее свойств!

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Добавление новых свойств в объект

A

const myCity = {
city: ‘New York’
}
myCity.popular=true
console.log (myCity)
Должно вывести true
myCity.country= ‘USA’
console.log (myCity) -после данного вывода я получил три свойства в данном объекте:
Значение переменной ни меняется -именно поэтому обходим const !

//{city:’New York’,popular:true,country:USA}

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Удаление свойства из объекта

A

const myCity= {
city: ‘New York’
popular:true,
country: ‘USA’
}
delete myCity.country
console.log(myCity)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Доступ к значению свойства с использованием скобок !

A

const myCity = {
city: ‘New York’
}
myCity [popular] = true
console.log (myCity)
// {city: ‘New York’, popular: true}
const countryPropertyName=‘country’
myCity [countryPropertyName]= ‘USA’
console.log(myCity)
// {city: ‘New York’,popular: true,country: ‘USA’}
Добавление свойства через квадратные скобки нужно если значение свойства является значением той-или иной переменной!
Also called : Bracket notation
Во втором примере : country имеется в значении и тем самым когда я объявляю значение тем же словом ,которое является значением другого свойства-надо делать через квадратные скобки !
Также можно совершать удаление через delete !

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Объекты -вложенные свойства !?

A

const myCity= {
city: ‘New York,
info: {
isPopular:true,
country: ‘USA’
}
}
console.log(myCity.info.IsPopular)
//true
delete myCity.info [‘isPopular]
console.log(myCity)
// {city: ‘New York’,info:
{country: ‘USA’}}
В данном примере у объекта myCity есть свойство info, которое имеет в значении объект и этот объект уже имеет своих два свойство
isPopular:true,
country :’ USA’
Здесь иерархия объектов и чтобы дойти до isPopular, надо console.log( myCity.info.isPopular) две точки , чтобы добраться до данного объекта , который находится внутри объекта -как матрешка !
Внимание на запись с квадратными скобками ! И точечную запись .Но здесь квадратные скобки бесполезны т.к их нужно использовать когда в свойствах такое же название как и имя переменной !

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Объекты использование переменных

A

const name = ‘Bogdan’
const postsQty=23
const userProfile= {
name: name,
postsQty: postsQty,
hasSignedAgreement: false-фолс
}

Здесь свойство и переменная имеют одинаковые значения -так вот , это можно не записывать ! Просто ставишь запятую и это считается дублированием .
Дубляж лучше первыми выставлять в объекте , чтобы бы было более понятней !

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Глобальные объекты?

A

Window -присутствует в браузере
Global -такой объект присутствует в node.js

Унифицированный глобальный объект : globalThis- благодаря этой записи я получу из терминала также Глобал объект , а из интернет консоли window !
window.console.log(10) -я могу получать доступ к свойствам глобального объекта window .
Либо просто console.log (10) веб-браузер будет понимать , что я пытаюсь получить доступ к одному из свойств глобального объект window !

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Методы

A

const myCity = {
city: ‘New York’
cityGreeting:function () {
console.log ( Greetings!!’)
}
}
myCity.cityGreeting()
Две скобки после функции -это опциональные скобки и между фигурными скобками находится тело функции!
И если у меня есть объект с таким методом , то вызов на нижней строке с опциональными скобками ☝️
Методы свойства объекта , которые содержат функции !
Вообще можно без ключевого слова function , а просто ставь опциональные скобки !
Запомни вызовы функции и свойств !
myCity.city
myCity.city Greeting()
Метод это тоже свойство -просто свойство с функцией это метод!

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

JSON ?

A

Java script object notation
{
“userld”:1,
“Id”:1,
“title”:1,
“title”: Test title”,
“status”: {
“completed”:false
}
}
Это формат обмена данными
Между компьютерами в интернете!
Обычно когда я загружаю любую веб-страницу , эта страница обращается к другим серверам, чтобы получить данные и показать их мне на экране !
Картинки или текст , возможно посты человека !
Чтобы передать такие данные с серверов -используется этот формат !
Двойные кавычки , т.к это формат записи JSON !
Тут вложенный объект !

20
Q

Передача данных в JSON?
Как происходит ?

Как можно конвертировать в JAVASCRIPT ? Или наоборот ?

A

{“userId”:1, “id”: 1, “title”: “Test title”, “status”: {“completed”: false}}
JSON -передается в виде строки

Это метод
JSON.parse()
То есть , если я получил код закодированный по методу JSON , я могу передать его как аргумент в вызове метода JSON.parse() и в результате получу JAVASCRIPT объект !
Обратная функция :
JSON.stringify() эта функция способна перевести с JavaScript формат на JSON !

21
Q

Вызов и конвертация объекта из формата JAVASCRIPT в формат JSON и обратно !

A

const post = {
title: ‘My post’,
likesQty: 5
}
undefined -это будет
post
title: ‘My post’, likesQty: 5}

JSON-просто вызов данного объект
JSON.stringify(post) -это уже конвертация с языка Java на формат JSON
{ “title”:”My post”,”likesQty”}’
- А это уже что вышло !
Обратная конвертация
const postStringified=JSON.stringify(post)-данная строка -это присвоение название объекту, чтобы дальше его конвертировать !
Будет undefined
JSON.parse(postStringified)-и дальше все вернется в JavaScript формат =>
{title: ‘My post’, likesQty: 5}
likesQty:5
title : “My post”

22
Q

Мутация в JAVASCRIPT

A

const a=10
let b=a
b=30
console.log (a) //10
console.log(b)//30
Происходит копирование значения (а) в b
Я ввел в консоли проверку по console.log (b) и выдало 10 как и в переменой (a) до того как присвоил переменной b=30

23
Q

Значение ссылочного типа ?

A

const person= {
name: ‘Bob’,
age:21
person.age=22
person.isAdult=true
console.log ( person.age) //22
console.log(person.IsAdult) //true
Снова изменяем значения свойств и здесь объект мутирует !
Мутация объекта на который ссылается переменная person !

24
Q

Мутирование копий ?

A

const person = {
name: ‘Bob’,
age: 25
}
const person2=person
person2.age=26
person2.isAdult = true
console .log(person.age) //26
console.log(person.isAdult)//true
После копирования ссылки
объекта person в переменную person 2 -значения также можно изменять-то есть они перенеслись ! И после изменения значения -даже если эта копия, то значение изменяется и в оригинале как это произошло с age в этом случае и через
console.log( person.age) //26
Будет и в копии и в оригинале !
Copy by reference -копирование по ссылке !
Изменяя копию -также изменяется исходный объект,это надо понимать !
Person2 , это всего лишь ссылка и мы переходим по ссылке и дальше изменяем свойства объекта person!

25
Q

Как избежать мутаций в JavaScript? Пример 1

A

const person = {
name: ‘Bob’,
age:25
}
const person2= Object.assign({},person)
person2.age = 26
console.log( person.age )//25
console.log(person2.age)//26
Чтобы обойти мутацию копий и оставить копии свои значения, а исходному варианту Свои.
Используем метод assign , который является методом объекта Object , а объект Object в свою очередь является свойством глобального объекта ,поэтому доступен в веб-браузере -так и в Node.Js.
Assign -это один из методов объекта Object !
Благодаря этому методу можно создать новый объект на основе старого !
Нельзя изменить вложенный объект , т.к он уже со свойствами , поэтому менять можно только корневые значения !

26
Q

Записи переменой с большой буквы ?

A

Object -записан с заглавной буквы и такой формат записи называется Pascale case и используется для записи классов и типов в Java!
И Object является прототипом всех объектов в JavaScript !

27
Q

Как избежать мутации объект. Пример 2

A

const person = {
name: ‘Bob’,
age: 25
}
const person2 = { … person}
person2.name = ‘Alice’
console.log(person2.name) //Alice
console.log(person.name)//Bob
Три точки -это оператор spread -или разделение объекта на свойства !
Если у объекта есть свойств, которые ссылаются на вложенные объекты , то ссылки сохранятся и когда я буду пытаться в скопированном объекте менять вложенные объекты-они будут также меняться и в оригинальном объекте ! То есть частично объект anyway будет меняться !

28
Q

Как избежать мутаций !
Вариант 3

A

const person = {
name: ‘Bob’,
age: 25
}
const person2= JSON.parse( JSON.stringify(person))
person.name=‘Alice’
console.log( person.name) //Alice
console.log.(person2.name) //Bob
Сначала через stringify, я конвертирую объект в формат JSON, а после работает JSON parse и происходит обратная конвертация в объект JAva !
Происходит двойная конвертация! И благодаря этому можно менять даже вложенные объекты и ссылки на них не сохраняются . То есть менять можно person2 , person-и изменения будут на каждом из них , а не на обоих сразу !

29
Q

Функция ?

A

Функция -это блог кода , который можно выполнять многократно !
let a = 5
let b = 3
let c
c = a+b
console.log (c) // 8
a = 8
b = 12
c = a+b
console .log(c) // 20
Блок кода выглядит идентичным, а это уже ни оптимально !
Можно избежать этого с помощью функции !
let a = 5
let b = 3
function sum( a, b) {
const c = a+b
console.log(c)
}
sum(a,b) //8
a = 8
b = 12
sum ( a.b) //20
Внутри данной функции суммируются значения двух переменных и запрос в консоль за результатом уже вложен - то есть автоматом через функцию , можно запрашивать объединение переменных и ответ через
sum(a,b)
То есть в теле функции можно задавать определенные действия и дальше уже ни ломать голову , а просто запрашивать функцию со значениями ! К примеру в данном примере , я могу менять значения переменных и получать ответ -это как своего рода калькулятор !

30
Q

Функция может быть ?

A

Именованной !
Анонимной !
Присвоенной переменной !
Аргументом при вызове другой функции!
И также может быть значением свойства(метода) объекта !
Функция это объект в JAVASCRIPT )

31
Q

Пример функции ! ?

A

function myFn(a,b){
let c
a = a+1
c = a+b
return c
}

Function (a,b) {
arguments :null
caller: null
length: 2
name: ‘myFn’
}
Используя точечную запись можно получить доступ к свойствам !
console.dir(myFn.name ) к примеру!

32
Q

Структура функции

A

function myFn(a,b) {
a= a+1
c= a+b
return c -после этой строки функция прекращает выполнения любых дальнейших инструкций !
То есть если после этой строки задать еще операции -они не будут выполнены !
Если функция не имеет инструкции return , то она возвращает undefined !

33
Q

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

A

function myFn(a,b) {
let c
a = a + b
c = a + b
return c
}
myFn(10,3)
Значения параметров в функции определяются в вызове этой функции !
Аргументы , это те значения , которые я передаю в вызове функции !
Параметры -это то , что в скобках !

34
Q

Я над этим ломал голову
Касательно функции и ее содержания !
Назначение параметров через аргументацию в конце !

A

function myFn(a, b) {
let c
a = a + 1
c = a + b
return c
}
const soft = myFn(10,3)
console.log(soft)
То есть , я пытался вызвать функцию без присваивание ее к какой либо переменной ! Как итог нужно сначала собрать полную картину для интерпретатора , а потом уже запрашивать ответ !
Аргументы опциональны!
Параметры опциональны !
Инструкция со словом return опционально!
Если инструкция с ключевым словом return отсутствует , то вывод будет undefined !

35
Q

Useful commands on MacBook

A

Command-A: Select All items.

Shift-Command-5: In macOS Mojave or later, take a screenshot or make a screen recording. Or use Shift-Command-3 or Shift-Command-4 for screenshots. Learn more about screenshots
Command Z отмена предыдущей команды command , shift Z
Command F , поиск объектов в документе или открытие окна find !
Command F , переход в полный экран , если поддерживается программой!

36
Q

Нужно уяснить себе этот момент

A

Не нужно действовать от ощущения того, что это надо и нужно страдать ( достигать любыми способом) -надо фокусироваться на спокойствие и гармонии внутри , а это в свою очередь должно быть основным топливом любого действия -тем самым уровень к.п.д увеличится в разы и самому комфортно !

37
Q

Самая короткая функция ?

A

function myFn() {}
myFn// undefined
Есть название , нет параметром и аргументов, но есть круглые скобки , которые являются частью синтаксиса функции !
Тело функции -фигурные скобки !

38
Q

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

A

const.personOne = {
name : ‘Bob’,
Age : 21
}
function increasePersonAge(person) {
person.age += 1
return person
}
increasePersonAge(personOne)
console.log( PersonOne.age)//22

Здесь функция мутирует внешний объект через person !
increasePersonAge(personOne) -это передача объекта по ссылке -то есть я передал функцию {
person.age += 1
return person
} Я передал эту функцию или объект первой переменой !
Но внутри функции ни рекомендуется мутировать внешние объекты !
Person на входе в функцию ссылается на самый верхний объект, но с помощью Object.assign ({},person) -я создаю новый объект и формирую его исходя из старых свойств объекта person! То есть udatedPerson это новый объект, который я меняю в функции и в конце функции с помощью return , я возвращаю новый объект to updatedPerson!
То есть return это возвращение объекту updatedPerson -результат работы функции!
И результат данной функции, я присваиваю уже новой переменой:
const updatedPersonOne = increasePersonAge(personOne)

39
Q

Callback Function
КолБэк

A

function anotherFunction() {
}
function fnWithCallback(callbackFunction(
}
fnWithCallback(anotherFunction)-именно так происходит вызов
То есть первое -это то , что я в тело второй функции внес другую функцию и при вызова этой функции я получу эту другую функцию !

40
Q

Пример callback function
And setTimeout

A

function printMyName () {
console.log (‘Bogdan’)
setTimeout(printMyName,1000)
setTimeout -это функция глобального объекта .
Она встроена по умолчанию как один из методов глобального объекта ! Эта функция вызывает внутри себя функцию, которая передана как первый аргумент в вызове функции !
Данная функция как самособирающий робот .
Я вызываю только название функции, а сама функция вызывается внутри setTimeout!
SetTimeout -работает таким образом , что внутри вызова этой функции есть два аргумента 1-й это название функции и второй этой число в миллисекундах.
SetTimeout-вызывает callBack функцию в данном примере (printMyName)- через определенное время !

41
Q

Правила работы с функциями!

A

1-Называть функции исходя из выполняемых задач !
2-Одна функция должна выполнять одну задачу -single purpose !
3-Не рекомендуется изменять внешние относительно функции переменные! Pure function!

42
Q

Глобальная область видимости ?

A

Глобальная область видимости будет выделять такие обьекты как window в консоли и global в node.js.
Можно и новые переменные определять в глобальной области видимости !
Также можно создавать локальные области видимости а внутри них создавать переменные !
Есть локальные переменные -есть глобальные переменные , если ни задавать переменную в локальной видимости , то при ее вызове выход будет с глобальной области видимости !
Пример ;
let a
let b
function myFn () {
let b
a = true
b = 10
console.log(b)
}
myFn() -это вызов функции в данном случае и интерпретатор выдаст внутренний алгоритм !
console.log(b) -касательно свойств функции : иногда используется для вывода каких -то свойств !

43
Q

Цепочка областей видимости ?

A

const a = 5
function myFn () {
function innerFn () {
console.log(a) //5
}
innerFn()
}
myFn ()

44
Q

Цепочка областей видимости ?

A

const a = 5
function myFn() {
function innerFn() {
console.log(a) //5
}
innerFn()
}
myFn()
Внутри функции myFn , я объявил еще одну функцию innerFn -внутренняя функция, которая выводит в консоль значение переменной “a”
. А после мы вызываем функцию «innerFn”внутри функции myFn . Если я объявлю функцию innerFn в самом конце , то интерпретатор выдаст неопределенно т.к данная функция не задана в глобальной области видимости ! Ее можно вызвать только внутри функции myFn , т.к она назначена внутри данной функции ! Есть глобальная область видимости , где myFn , а в ней уже создается локальная область InnerFn, которая имеет вывод ! Область видимости для функции innerFn -это выход за рамки , поэтому после объявления через console переменой “a” , я получил 5 .

45
Q

Жизненный цикл областей видимости и влияние того , где задаешь переменой значение в локальной области или в глобальной !?

A

let a
let a
function () {
let b
a = true
b = 10
console.log (b)
myFn()
console.log (a) //true
console .log (b) //undefined
Переменная b -сначала объявляется через let в глобальной области видимости ! Но без значения , поэтому при ее вызове будет undefined !
Потом b- вызывается в функции -локальной области видимости и в ней же назначается , а потому назначение только в этой функции и котируется !
После вызова функции myFn , функция решит свой алгоритм и выдаст 10 , а дальше значения переменных в ней уничтожаться -то есть они не будут влиять на переменные глобальной области видимости или любой другой локальной !
Но переменная “a” имеет другие характеристики : она ни объявляется в функции ,то есть нет второй такой же переменой в функции -именно поэтому при вызове этой переменной в глобальной области видимости она будет ссылаться на значение внутри функции . Внутри функции нельзя изменять внешние переменные . Переменные внутри локальных областей видимости имеют приоритет !

46
Q

Области видимости
Это про нелепый пример ?

A

function myFn () {
a = true
console.log (a) //true
}
myFn()
console.log(a) // true
Я в этом примере ни объявлял переменную , но присвоил переменной значение (как будто бы ее уже объявил где-то ) а все потому что переменная «а» будет автоматически объявлена в глобальной области видимости ! И тем самым после совершения алгоритма функции, я смогу вызвать данную переменную и ее значение в отобразится в консоли !