Объясните массивы в JavaScript

Массивы в JavaScript — это тип объекта, используемый для хранения нескольких значений в одной переменной. Массивы используют нумерованные индексы. Пример:

let fruits = ["apple", "banana", "mango"];
console.log(fruits[0]); // "apple"

Что такое Scope в JavaScript?

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

var x = 10;  // global scope
function myFunction() {
  var y = 20; // local scope
  console.log(x); // can access global scope
  console.log(y); // can access local scope
}
myFunction();
console.log(y); // Error: y is not defined, can't access local scope

Объясните равенство в JavaScript

В JavaScript есть два типа равенства: свободное равенство (==) и строгое равенство (===). Нестрогое равенство использует приведение типов перед сравнением, тогда как строгое равенство сравнивает без приведения типов.

console.log(1 == "1");  // true, because after type coercion they are equal
console.log(1 === "1"); // false, because their types are different

Что такое оператор typeof?

typeof — это оператор в JavaScript, который возвращает строку, представляющую тип данных его операнда. Пример:

console.log(typeof "Hello"); // "string"
console.log(typeof 4); // "number"
console.log(typeof {}); // "object"

Что такое тип объекта?

Тип object — это тип данных в JavaScript. Это сложный тип данных, который позволяет хранить наборы данных. Объект создается с фигурными скобками {…} и содержит список свойств.

let user = {
  name: "John",
  age: 30
};

Объясните значения и типы в JavaScript

JavaScript имеет несколько типов данных. Примитивные типы включают Number, String, Boolean, null, undefined, Symbol и BigInt. Объекты также являются типом. Примитивные значения неизменяемы, но объекты могут быть изменены.

let num = 10; // number
let str = "hello"; // string
let bool = true; // boolean
let n = null; // null
let und; // undefined
let sym = Symbol(); // symbol
let bigInt = BigInt(1234567890123456789012345678901234567890); // bigInt
let obj = {}; // object

Объясните Null и Undefined в JavaScript

null и undefined — это два примитивных типа в JavaScript. null — это значение, которое не представляет значения или объекта, а undefined означает, что переменная была объявлена, но ей еще не присвоено значение.

let a = null;
let b;
console.log(b); // undefined

Что такое строгий режим?

«Строгий режим» — это способ выбрать ограниченный вариант JavaScript, который не позволяет выполнять определенные действия и создает больше исключений. Его можно включить, добавив "use strict"; в начало файла, скрипта или функции.

"use strict";
x = 3.14; // This will cause an error because x is not declared

Что такое полифилл?

Полифилл — это код, который реализует функцию в веб-браузерах, которые не поддерживают эту функцию. Чаще всего это относится к библиотеке JavaScript, которая реализует функцию HTML5 или CSS3, не поддерживаемую определенной версией браузера.

Что такое ключевое слово let в JavaScript?

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

for(let i = 0; i < 5; i++) {
  console.log(i); // i is only visible in this block
}
console.log(i); // Error: i is not defined

Объясните всплытие событий и как его можно предотвратить

Всплывающие события — это тип распространения событий в JavaScript, когда событие начинается с целевого элемента и всплывает к его родителям в дереве DOM. Чтобы остановить всплытие событий, вы можете использовать метод event.stopPropagation().

document.querySelector("button").addEventListener('click', function(event) {
  event.stopPropagation();
  console.log("Button was clicked.");
});

Какие языковые конструкции вы используете для перебора свойств объекта и элементов массива?

Для перебора свойств объектов и элементов массива можно использовать циклы for...in и for...of соответственно.

let obj = {a: 1, b: 2};
for (let prop in obj) {
  console.log(`obj.${prop} = ${obj[prop]}`);
}

let arr = [1, 2, 3];
for (let value of arr) {
  console.log(value);
}

Почему в целом рекомендуется оставлять глобальную область веб-сайта как есть и никогда ее не трогать?

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

Зачем вам использовать что-то вроде события загрузки? Есть ли у этого мероприятия недостатки? Знаете ли вы какие-либо альтернативы и почему вы их используете?

Событие load используется для запуска блока кода после завершения загрузки страницы. Это может быть невыгодно, если скрипт использует элементы DOM, которые могут не существовать во время загрузки скрипта. Альтернативы включают событие DOMContentLoaded, которое срабатывает, как только модель DOM будет готова, или событие $(document).ready() jQuery, которое аналогично.

Объясните политику того же происхождения в отношении JavaScript.

Политика единого источника — это мера безопасности, реализованная в веб-браузерах для предотвращения взаимодействия между ресурсами из разных источников. Две страницы имеют одинаковое происхождение, если протокол, порт и хост одинаковы для обеих страниц.

В чем разница между throw Error(‘msg’) и throw new Error(‘msg’)?

И throw Error('msg'), и throw new Error('msg') делают одно и то же: выдают ошибку с сообщением. throw Error('msg') — это сокращение от throw new Error('msg').

В чем разница между == и ===?

== — это оператор равенства, и он выполняет приведение типов, если типы операндов различаются. === — это оператор строгого равенства, и он не выполняет приведение типов. Он проверяет, совпадают ли значение и тип обоих операндов.

Есть ли способ принудительно использовать строгий режим в Node.js?

В Node.js вы можете включить строгий режим, добавив "use strict"; в начало файла.

"use strict";
x = 1; // this will throw an error in strict mode

В чем разница между объектами Host и собственными объектами?

Собственные объекты — это объекты, предоставляемые JavaScript, такие как String, Math, RegExp, Object, Function и т. д. Хост-объекты предоставляются хост-средой, в которой выполняется JavaScript, например window, document, location в браузере или exports, require , module в Node.js.

Что делает use strict?

«use strict» — это директива в JavaScript, которая помогает писать безопасный JavaScript, вызывая ошибки для потенциально опасных действий, например, присваивая значение глобальной переменной, доступной только для чтения.