Sobes.tech
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));