Back to questions
Яндекс Маркет
Middle
3
Общее понимание JavaScript: передача параметров, асинхронность, прототипы, обработка ошибок
Companies where asked
Answer from AI
sobes.tech AI
В JavaScript:
Передача параметров:
- Примитивы (числа, строки, булевы) передаются по значению — функция получает копию.
- Объекты и массивы передаются по ссылке — функция получает ссылку на оригинальный объект, поэтому изменения внутри функции влияют на внешний объект.
function change(x) { x = 5; }
let a = 1;
change(a);
console.log(a); // 1 — примитив не изменился
function changeObj(obj) { obj.prop = 5; }
let o = { prop: 1 };
changeObj(o);
console.log(o.prop); // 5 — объект изменился
Асинхронность:
- JavaScript однопоточный, но поддерживает асинхронные операции через callback, промисы и async/await.
- Асинхронный код позволяет не блокировать основной поток, например, при запросах к серверу.
async function fetchData() {
try {
let response = await fetch('https://api.example.com/data');
let data = await response.json();
console.log(data);
} catch (error) {
console.error('Ошибка:', error);
}
}
Прототипы:
- В JS объекты наследуют свойства через цепочку прототипов.
- Каждый объект имеет скрытое свойство [[Prototype]], указывающее на другой объект.
- Можно создавать наследование через
Object.createили функции-конструкторы.
function Person(name) {
this.name = name;
}
Person.prototype.greet = function() { console.log('Привет, ' + this.name); };
let p = new Person('Иван');
p.greet(); // Привет, Иван
Обработка ошибок:
- Используется конструкция try/catch для синхронного кода.
- Для асинхронного кода — обработка ошибок через catch у промисов или try/catch внутри async функций.
try {
throw new Error('Что-то пошло не так');
} catch (e) {
console.error(e.message);
}
fetch('url')
.then(response => response.json())
.catch(error => console.error('Ошибка запроса:', error));