Начало работы
Введение
JavaScript - это легкий интерпретируемый язык программирования.
- JSON cheatsheet (cheatsheets.zip)
- Regex в JavaScript (cheatsheets.zip)
Консоль
``javascript // => Hello world! console.log(‘Hello world!’);
// => Hello CheatSheets.zip console.warn(‘hello %s’, ‘CheatSheets.zip’);
// Вывод сообщения об ошибке в stderr console.error(new Error(‘Oops!’));
### Числа
```javascript
let amount = 6;
let price = 4.99;
Переменные
``javascript let x = null; let name = “Тэмми”; const found = false;
// => Tammy, false, null console.log(name, found, x);
var a; console.log(a); // => undefined
### Строки
``javascript
let single = "Где моя разбойничья шапка?";
let double = "Где моя разбойничья шапка?";
// => 21
console.log(single.length);
Арифметические операторы
``javascript 5 + 5 = 10 // Сложение 10 - 5 = 5 // Вычитание 5 * 10 = 50 // Умножение 10 / 5 = 2 // Деление 10 % 5 = 0 // Модуло
### Комментарии
```javascript
// Эта строка будет обозначать комментарий
/*
Приведенная ниже конфигурация должна быть
перед развертыванием.
*/
Операторы присваивания
let number = 100;
// Оба оператора прибавят 10
number = number + 10;
number += 10;
console.log(number);
// => 120
Интерполяция строк
let age = 7;
// Конкатенация строк
'Tommy is ' + age + ' years old.';
// Интерполяция строк
``Томми сейчас ${age} лет``;
let Keyword
``javascript let count; console.log(count); // => неопределено count = 10; console.log(count); // => 10
### const Ключевое слово
``javascript
const NumberOfColumns = 4;
// TypeError: Присвоение константе...
numberOfColumns = 8;
JavaScript Conditionals
Утверждение ### if
``javascript const isMailSent = true;
if (isMailSent) { console.log(‘Почта отправлена получателю’); }
### Тернарный оператор
``javascript
var x=1;
// => true
result = (x == 1) ? true : false;
Операторы
``javascript true || false; // true 10 > 5 || 10 > 20; // true false || false; // false 10 > 100 || 10 > 20; // false
#### Логический оператор &&
``javascript
true && true; // true
1 > 2 && 2 > 1; // false
true && false; // false
4 === 4 && 3 > 1; // true
Операторы сравнения
``javascript 1 > 3 // false 3 > 1 // true 250 >= 250 // true 1 === 1 // true 1 === 2 // false 1 === ‘1’ // false
#### Логический оператор !
``javascript
let lateToWork = true;
let oppositeValue = !lateToWork;
// => false
console.log(oppositeValue);
Оператор коалесценции Nullish ?
``javascript null ?? ‘I win’; // ‘I win’ undefined ?? ‘Я тоже’; // ‘Я тоже’
false ?? ‘Я проиграл’ // false 0 ?? ‘Я снова проиграл’ // 0 ’’ ?? ‘Черт возьми’ // '’
### else if
``javascript
const size = 10;
if (size > 100) {
console.log('Big');
} else if (size > 20) {
console.log('Medium');
} else if (size > 4) {
console.log('Small');
} else {
console.log('Tiny');
}
// Печать: Маленький
switch Statement
``javascript const food = ‘salad’;
switch (food) { case ‘oyster’: console.log(‘Вкус моря’); break; case ‘pizza’: console.log(‘Вкусный пирог’); break; default: console.log(‘Приятного аппетита’); }
### == vs ===
```javascript
0 == false // true
0 === false // false, другой тип
1 == "1" // true, автоматическое преобразование типа
1 === "1" // false, другой тип
null == undefined // true
null === undefined // false
'0' == false // true
'0' === false // false
==
проверяет только значение, ===
проверяет и значение, и тип.
Функции JavaScript
Функции
``javascript // Определение функции: function sum(num1, num2) { return num1 + num2; }
// Вызов функции: sum(3, 6); // 9
### Анонимные функции
```javascript
// Именованная функция
function rocketToMars() {
return 'BOOM!';
}
// Анонимная функция
const rocketToMars = function() {
return 'BOOM!';
}
Функции стрелок (ES6)
С двумя аргументами
``javascript const sum = (param1, param2) => { return param1 + param2; }; console.log(sum(2,5)); // => 7
#### Без аргументов
```javascript
const printHello = () => {
console.log('hello');
};
printHello(); // => hello
С одним аргументом
const checkWeight = weight => {
console.log(`Weight : ${weight}`);
};
checkWeight(25); // => Вес : 25
Краткие стрелочные функции
``javascript const multiply = (a, b) => a * b; // => 60 console.log(multiply(2, 30));
[Функция стрелки](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions) доступна начиная с ES2015
### return Keyword
``javascript''
// С возвратом
function sum(num1, num2) {
return num1 + num2;
}
// Функция не выводит сумму
function sum(num1, num2) {
num1 + num2;
}
Вызов функций
// Определение функции
function sum(num1, num2) {
return num1 + num2;
}
// Вызов функции
sum(2, 4); // 6
Функциональные выражения
``javascript const dog = function() { return ‘Woof!’; }
### Параметры функции
``javascript
// Параметром является имя
function sayHello(name) {
return ``Привет, ${name}!``;
}
Декларация функции
function add(num1, num2) {
return num1 + num2;
}
Область применения JavaScript
Область применения
``javascript function myFunction() {
var pizzaName = “Маргарита”; // Код здесь может использовать pizzaName
}
// Код здесь не может использовать pizzaName
### Переменные, привязанные к блоку
```javascript
const isLoggedIn = true;
if (isLoggedIn == true) {
const statusMessage = 'Вошел в систему.'
}
// Uncaught ReferenceError...
console.log(statusMessage);
Глобальные переменные
// Переменная, объявленная глобально
const color = 'blue';
function printColor() {
console.log(color);
}
printColor(); // => синий
let vs var
for (let i = 0; i < 3; i++) {
// Это максимальная область применения функции 'let'
// i accessible ✔️
}
// i недоступно ❌
for (var i = 0; i < 3; i++) {
// i доступно ✔️
}
// i accessible ✔️
var
скопирован на ближайший блок функций, а let
- на ближайший объемлющий блок.
Циклы с замыканиями
``javascript{.wrap} // Печатает 3 трижды, а не то, что мы имели в виду. for (var i = 0; i < 3; i++) { setTimeout(_ => console.log(i), 10); }
---
```javascript{.wrap}
// Печатает 0, 1 и 2, как и ожидалось.
for (let j = 0; j < 3; j++) {
setTimeout(_ => console.log(j), 10);
}
Переменная имеет собственную копию с помощью let
, а переменная имеет общую копию с помощью var
.
Массивы JavaScript
Массивы
``javascript const fruits = [“яблоко”, “апельсин”, “банан”];
// Различные типы данных const data = [1, ‘chicken’, false];
### Свойство .length
``javascript
const numbers = [1, 2, 3, 4];
numbers.length // 4
Индекс
// Доступ к элементу массива
const myArray = [100, 200, 300];
console.log(myArray[0]); // 100
console.log(myArray[1]); // 200
Взаимозаменяемая диаграмма
add | remove | start | end | |
---|---|---|---|---|
push |
✔ | |||
pop |
✔ | ✔ | ||
unshift |
✔ | ✔ | ||
shift |
✔ | ✔ | ✔ | |
{.show-header} |
Метод .push()
``javascript // Добавление одного элемента: const cart = [‘apple’, ‘orange’]; cart.push(‘pear’);
// Добавление нескольких элементов: const numbers = [1, 2]; numbers.push(3, 4, 5);
Добавляет элементы в конец и возвращает новую длину массива.
### Метод .pop()
``javascript
const fruits = ["яблоко", "апельсин", "банан"];
const fruit = fruits.pop(); // 'банан'
console.log(fruits); // ["яблоко", "апельсин"]
Удаляет элемент из конца и возвращает удаленный элемент.
Метод .shift()
``javascript let cats = [‘Bob’, ‘Willy’, ‘Mini’];
cats.shift(); // [‘Willy’, ‘Mini’]
Удаляет элемент из начала и возвращает удаленный элемент.
### Метод .unshift()
``javascript
let cats = ['Bob'];
// => ['Willy', 'Bob'].
cats.unshift('Willy');
// => ['Puff', 'George', 'Willy', 'Bob']
cats.unshift('Puff', 'George');
Добавляет элементы в начало и возвращает новую длину массива.
Метод .concat()
``javascript const numbers = [3, 2, 1] const newFirstNumber = 4
// => [ 4, 3, 2, 1 ] [newFirstNumber].concat(numbers)
// => [ 3, 2, 1, 4 ] numbers.concat(newFirstNumber)
Если вы хотите избежать мутации исходного массива, можно использовать concat.
JavaScipt Set
------------
### Создать набор
``javascript
// Пустой объект Set
const emptySet = new Set()
// Объект Set со значениями
const setObj = new Set([1, true, "hi"])
Add
const emptySet = new Set()
// добавляем значения
emptySet.add('a') // 'a'
emptySet.add(1) // 'a', 1
emptySet.add(true) // 'a', 1, true
emptySet.add('a') // 'a', 1, true
Delete
``javascript const emptySet = new Set([1, true, ‘a’])
// удаляем значения emptySet.delete(‘a’) // 1, true emptySet.delete(true) // 1 emptySet.delete(1) //
### Has
```javascript
const setObj = new Set([1, true, 'a'])
// возвращает true или false
setObj.has('a') // true
setObj.has(1) // true
setObj.has(false) // false
Очистить
const setObj = new Set([1, true, 'a'])
// очищает набор
console.log(setObj) // 1, true, 'a'
setObj.clear() //
Размер
const setObj = new Set([1, true, 'a'])
consoloe.log(setObj.size) // 3
ForEach
``javascript const setObj = new Set([1, true, ‘a’])
setObj.forEach(function(value){ console.log(value) })
// 1 // true // ‘a’
Циклы JavaScript
------------
### Цикл While
``javascript
while (condition) {
// блок кода, который будет выполнен
}
let i = 0;
while (i < 5) {
console.log(i);
i++;
}
Обратный цикл
``javascript const fruits = [“яблоко”, “апельсин”, “банан”];
for (let i = fruits.length - 1; i >= 0; i–) {
console.log(${i}. ${fruits[i]}
);
}
// => 2. банан // => 1. апельсин // => 0. яблоко
### Do...While Statement
```javascript
x = 0
i = 0
do {
x = x + i;
console.log(x)
i++;
} while (i < 5);
// => 0 1 3 6 10
For Loop
for (let i = 0; i < 4; i += 1) {
console.log(i);
};
// => 0, 1, 2, 3
Перебор массивов
for (let i = 0; i < array.length; i++){
console.log(array[i]);
}
// => Каждый элемент массива
Break
for (let i = 0; i < 99; i += 1) {
if (i > 5) {
break;
}
console.log(i)
}
// => 0 1 2 3 4 5
Продолжение
for (i = 0; i < 10; i++) {
if (i === 3) { continue; }
text += "Число равно " + i + "<br>";
}
Вложенные
for (let i = 0; i < 2; i += 1) {
for (let j = 0; j < 3; j += 1) {
console.log(`${i}-${j}`);
}
}
for…in loop
``javascript const fruits = [“яблоко”, “апельсин”, “банан”];
for (let index in fruits) { console.log(index); } // => 0 // => 1 // => 2
### для... цикла
``javascript
const fruits = ["яблоко", "апельсин", "банан"];
for (let fruit of fruits) {
console.log(fruit);
}
// => яблоко
// => апельсин
// => банан
Итераторы JavaScript
Функции, присваиваемые переменным
``javascript let plusFive = (number) => { return number + 5; }; // f присваивается значение plusFive let f = plusFive;
plusFive(3); // 8 // Поскольку f имеет значение функции, ее можно вызывать. f(9); // 14
### Функции обратного вызова
```javascript
const isEven = (n) => {
return n % 2 == 0;
}
let printMsg = (evenFunc, num) => {
const isNumEven = evenFunc(num);
console.log(`${num} - четное число: ${isNumEven}.`)
}
// Передаем isEven в качестве функции обратного вызова
printMsg(isEven, 4);
// => Число 4 является четным числом: True.
Метод массива .reduce()
const numbers = [1, 2, 3, 4];
const sum = numbers.reduce((accumulator, curVal) => {
return accumulator + curVal;
});
console.log(sum); // 10
Метод массива .map()
``javascript const members = [“Тейлор”, “Дональд”, “Дон”, “Наташа”, “Бобби”];
const announcements = members.map((member) => { return member + " присоединился к конкурсу." });
console.log(announcements);
### Метод массива .forEach()
```javascript
const numbers = [28, 77, 45, 99, 27];
numbers.forEach(number => {
console.log(number);
});
Метод массива .filter()
``javascript const randomNumbers = [4, 11, 42, 14, 39]; const filteredArray = randomNumbers.filter(n => { return n > 5; });
Объекты JavaScript {.cols-2}
------------
### Доступ к свойствам
``javascript
const apple = {
цвет: 'Green',
цена: { bulk: '$3/kg', smallQty: '$4/кг' }
};
console.log(apple.color); // => зеленый
console.log(apple.price.bulk); // => $3/кг
Свойства именования
// Пример недопустимых имен ключей
const trainSchedule = {
// Недопустимо из-за пробела между словами.
platform num: 10,
// Выражения не могут быть ключами.
40 - 10 + 2: 30,
// Знак + недопустим, если он не заключен в кавычки.
+compartment: 'C'
}
Несуществующие свойства
``javascript const classElection = { date: ‘12 января’ };
console.log(classElection.place); // undefined
### Mutable {.row-span-2}
``javascript
const student = {
имя: 'Sheldon',
оценка: 100,
оценка: 'A',
}
console.log(student)
// { { name: 'Sheldon', score: 100, grade: 'A' }
delete student.score
student.grade = 'F'
console.log(student)
// { { имя: 'Sheldon', оценка: 'F' }
student = {}
// TypeError: Присвоение константной переменной.
Синтаксис сокращения присваивания
``javascript const person = { имя: ‘Tom’, возраст: ‘22’, }; const {name, age} = person; console.log(name); // ‘Tom’ console.log(age); // ‘22’
### Оператор удаления
``javascript
const person = {
firstName: "Матильда",
возраст: 27,
хобби: "вязание",
цель: "изучение JavaScript"
};
delete person.hobby; // или delete person[hobby];
console.log(person);
/*
{
firstName: "Матильда"
возраст: 27
цель: "изучение JavaScript"
}
*/
Объекты в качестве аргументов
const origNum = 8;
const origObj = {color: 'blue'};
const changeItUp = (num, obj) => {
num = 7;
obj.color = 'red';
};
changeItUp(origNum, origObj);
// Будет выведено 8, так как целые числа передаются по значению.
console.log(origNum);
// Будет выведено 'red', так как объекты передаются
// по ссылке и поэтому могут быть изменены.
console.log(origObj.color);
Создание коротких объектов
``javascript const activity = ‘Серфинг’; const beach = { activity }; console.log(beach); // { { activity: ‘Surfing’ }
### это ключевое слово
``javascript
const cat = {
имя: 'Pipey',
возраст: 8,
whatName() {
return this.name
}
};
console.log(cat.whatName()); // => Pipey
Фабричные функции
``javascript’’ // Фабричная функция, принимающая параметры ’name’, // ‘age’, and ‘breed’ parameters to return // настраиваемый объект собаки. const dogFactory = (name, age, breed) => { return { имя: имя, age: age, порода: порода, bark() { console.log(‘Гав!’); } }; };
### Методы
``javascript
const engine = {
// сокращение метода, с одним аргументом
start(adverb) {
console.log(``Двигатель запускает ${adverb}...``);
},
// анонимное выражение стрелочной функции без аргументов
sputter: () => {
console.log('Двигатель глохнет...');
},
};
engine.start('noisily');
engine.sputter();
Геттеры и сеттеры
``javascript const myCat = { _name: ‘Dottie’, get name() { return this._name; }, set name(newName) { this._name = newName; } };
// Ссылка вызывает геттер console.log(myCat.name);
// Назначение вызывает сеттер myCat.name = ‘Yankee’;
Классы JavaScript
------------
### Статические методы
``javascript
class Dog {
constructor(name) {
this._name = name;
}
introduce() {
console.log('Это ' + this._name + ' !');
}
// Статический метод
static bark() {
console.log('Гав!');
}
}
const myDog = new Dog('Buster');
myDog.introduce();
// Вызов статического метода
Dog.bark();
Класс
``javascript класс Song { constructor() { this.title; this.author; }
play() { console.log(‘Песня играет!’); } }
const mySong = new Song(); mySong.play();
### Конструктор класса
``javascript
класс Song {
constructor(title, artist) {
this.title = title;
this.artist = artist;
}
}
const mySong = new Song('Bohemian Rhapsody', 'Queen');
console.log(mySong.title);
Методы класса
``javascript класс Song { play() { console.log(‘Playing!’); }
stop() { console.log(‘Stopping!’); } }
### extends
``javascript
// Родительский класс
class Media {
constructor(info) {
this.publishDate = info.publishDate;
this.name = info.name;
}
}
// Дочерний класс
class Song extends Media {
constructor(songData) {
super(songData);
this.artist = songData.artist;
}
}
const mySong = new Song({
artist: 'Queen',
name: 'Bohemian Rhapsody',
publishDate: 1975
});
Модули JavaScript
Экспорт
``javascript // myMath.js
// Экспорт по умолчанию export default function add(x,y){ return x + y }
// Обычный экспорт export function subtract(x,y){ return x - y }
// Множественный экспорт function multiply(x,y){ return x * y } function duplicate(x){ return x * 2 } export { multiply, duplicate }
### Импорт
```javascript
// main.js
import add, { subtract, multiply, duplicate } из './myMath.js';
console.log(add(6, 2)); // 8
console.log(subtract(6, 2)) // 4
console.log(multiply(6, 2)); // 12
console.log(duplicate(5)) // 10
// index.html
<script type="module" src="main.js"></script>
Модуль экспорта
// myMath.js
function add(x,y){
return x + y
}
function subtract(x,y){
return x - y
}
function multiply(x,y){
return x * y
}
function duplicate(x){
return x * 2
}
// Множественный экспорт в node.js
module.exports = {
add,
вычитать,
умножать,
дублировать
}
Требуемый модуль
// main.js
const myMath = require('./myMath.js')
console.log(myMath.add(6, 2)); // 8
console.log(myMath.subtract(6, 2)) // 4
console.log(myMath.multiply(6, 2)); // 12
console.log(myMath.duplicate(5)) // 10
JavaScript Promises
Promise states
``javascript const promise = new Promise((resolve, reject) => { const res = true; // Асинхронная операция. if (res) { resolve(‘Resolved!’); } else { reject(Error(‘Ошибка’)); } });
promise.then((res) => console.log(res), (err) => console.error(err));
### Функция-исполнитель
```javascript
const executorFn = (resolve, reject) => {
resolve('Решено!');
};
const promise = new Promise(executorFn);
setTimeout()
const loginAlert = () =>{
console.log('Login');
};
setTimeout(loginAlert, 6000);
Метод .then()
``javascript const promise = new Promise((resolve, reject) => { setTimeout(() => { resolve(‘Result’) }, 200); });
promise.then((res) => { console.log(res); }, (err) => { console.error(err); });
### .catch() метод
```javascript
const promise = new Promise((resolve, reject) => {
setTimeout(() => {
reject(Error('Promise Rejected Unconditionally.'))
}, 1000);
});
promise.then((res) => {
console.log(value);
});
promise.catch((err) => {
console.error(err);
});
Promise.all()
const promise1 = new Promise((resolve, reject) => {
setTimeout(() => {
resolve(3);
}, 300);
});
const promise2 = new Promise((resolve, reject) => {
setTimeout(() => {
resolve(2);
}, 200);
});
Promise.all([promise1, promise2]).then((res) => {
console.log(res[0]);
console.log(res[1]);
});
Избегая вложенных Promise и .then()
const promise = new Promise((resolve, reject) => {
setTimeout(() => {
resolve('*');
}, 1000);
});
const twoStars = (star) => {
return (star + star);
};
const oneDot = (star) => {
{ return (star + '.')
};
const print = (val) => {
console.log(val);
};
// Соединяем их вместе
promise.then(twoStars).then(oneDot).then(print);
Создание
``javascript const executorFn = (resolve, reject) => { console.log(‘Функция-исполнитель обещания!’); };
const promise = new Promise(executorFn);
### Цепочка из нескольких .then()
```javascript
const promise = new Promise(resolve => setTimeout(() => resolve('dAlan'), 100));
promise.then(res => {
return res === 'Alan' ? Promise.resolve('Привет, Алан!') : Promise.reject('Кто ты?')
}).then((res) => {
console.log(res)
}, (err) => {
console.error(err)
});
Имитация http-запроса с помощью Promise
const mock = (success, timeout = 1000) => {
return new Promise((resolve, reject) => {
setTimeout(() => {
if(success) {
resolve({status: 200, data:{}});
} else {
reject({message: 'Error'});
}
}, timeout);
});
}
const someEvent = async () => {
try {
await mock(true, 1000);
} catch (e) {
console.log(e.message);
}
}
JavaScript Async-Await
Асинхронный
``javascript function helloWorld() { return new Promise(resolve => { setTimeout(() => { resolve(‘Hello World!’); }, 2000); }); }
const msg = async function() { //Async Function Expression const msg = await helloWorld(); console.log(‘Message:’, msg); }
const msg1 = async () => { //Async Стрелочная функция const msg = await helloWorld(); console.log(‘Message:’, msg); }
msg(); // Сообщение: Hello World! <– через 2 секунды msg1(); // Сообщение: Hello World! <– через 2 секунды
### Разрешение обещаний
```javascript
let pro1 = Promise.resolve(5);
let pro2 = 44;
let pro3 = new Promise(function(resolve, reject) {
setTimeout(resolve, 100, 'foo');
});
Promise.all([pro1, pro2, pro3]).then(function(values) {
console.log(values);
});
// expected => Array [5, 44, "foo"]
Async Await Promises
function helloWorld() {
return new Promise(resolve => {
setTimeout(() => {
resolve('Hello World!');
}, 2000);
});
}
async function msg() {
const msg = await helloWorld();
console.log('Message:', msg);
}
msg(); // Сообщение: Hello World! <-- через 2 секунды
Обработка ошибок
let json = '{ "возраст": 30 }'; // неполные данные
try {
let user = JSON.parse(json); // <-- ошибок нет
console.log( user.name ); // нет имени!
} catch (e) {
console.error( "Неверные JSON-данные!" );
}
Aysnc await operator
function helloWorld() {
return new Promise(resolve => {
setTimeout(() => {
resolve('Hello World!');
}, 2000);
});
}
async function msg() {
const msg = await helloWorld();
console.log('Message:', msg);
}
msg(); // Сообщение: Hello World! <-- через 2 секунды
Запросы JavaScript
JSON
``json const jsonObj = { “name”: “Rick”, “id”: “11A”, “level”: 4 };
Также см: [JSON cheatsheet](/json)
### XMLHttpRequest
``javascript
const xhr = new XMLHttpRequest();
xhr.open('GET', 'mysite.com/getjson');
XMLHttpRequest
- это API на уровне браузера, позволяющий клиенту писать сценарии передачи данных с помощью JavaScript, НЕ являющегося частью языка JavaScript.
GET
``javascript const req = new XMLHttpRequest(); req.responseType = ‘json’; req.open(‘GET’, ‘/getdata?id=65’); req.onload = () => { console.log(xhr.response); };
req.send();
### POST {.row-span-2}
``javascript
const data = {
рыба: 'Лосось',
вес: '1.5 кг',
единицы: 5
};
const xhr = new XMLHttpRequest();
xhr.open('POST', '/inventory/add');
xhr.responseType = 'json';
xhr.send(JSON.stringify(data));
xhr.onload = () => {
console.log(xhr.response);
};
fetch api
``javascript fetch(url, { method: ‘POST’, headers: { ‘Content-type’: ‘application/json’, ‘apikey’: apiKey }, body: data }).then(response => { if (response.ok) { return response.json(); } throw new Error(‘Request failed!’); }, networkError => { console.log(networkError.message) }) }
### JSON Formatted
```javascript
fetch('url-that-returns-JSON')
.then(response => response.json())
.then(jsonResponse => {
console.log(jsonResponse);
});
promise url parameter fetch api
``javascript fetch(‘url’) .then( response => { console.log(response); }, rejection => { console.error(rejection.message); );
### Функция API Fetch
``javascript
fetch('https://api-xxx.com/endpoint', {
method: 'POST',
body: JSON.stringify({id: "200"})
}).then(response => {
if(response.ok){
return response.json();
}
throw new Error('Запрос не прошел!');
}, networkError => {
console.log(networkError.message);
}).then(jsonResponse => {
console.log(jsonResponse);
})
async await syntax
``javascript
const getSuggestions = async () => {
const wordQuery = inputField.value;
const endpoint = ${url}${queryParams}${wordQuery}
;
try{
const response = await fetch(endpoint, {cache: ’no-cache’});
if(response.ok){
const jsonResponse = await response.json()
}
}
catch(error){
console.log(error)
}
}