Часть 2. Самые распространенные (6–9) вопросы по JavaScript

Jan 30 2023
JavaScript — это язык программирования, который стал одним из самых востребованных навыков в запросах на работу. Это многообразный язык, который используется для веб-разработки, разработки мобильных приложений, программирования на стороне сервера и многого другого.

JavaScript — это язык программирования, который стал одним из самых востребованных навыков в запросах на работу. Это многообразный язык, который используется для веб-разработки, разработки мобильных приложений, программирования на стороне сервера и многого другого.

В этом сообщении блога мы рассмотрим следующие 6–9 распространенных вопросов, которые часто задают на собеседованиях по JavaScript.

Вы можете обратиться к первой части 5 вопросов здесь

Часть 1. Самые распространенные (1–5) вопросы по JavaScript
Вопросы по Javascript

Вопрос 6: В чем разница между синхронным и асинхронным кодом?

Синхронный код — это тип кода, который выполняется в последовательном порядке, по одной строке за раз. Другими словами, следующая строка кода не будет выполняться до тех пор, пока не завершится выполнение текущей строки.

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

function printNumbers() {
  console.log(1);
  console.log(2);
  console.log(3);
}

printNumbers();

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

Этот тип кода часто используется в более крупных и сложных приложениях, где есть несколько задач, которые необходимо выполнять одновременно. Например, рассмотрим следующий асинхронный код:

async function printNumbers() {
  console.log(1);
  setTimeout(() => {
    console.log(2);
  }, 1000);
  console.log(3);
}

printNumbers();

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

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

Вопрос 7: В чем разница между передачей по значению и передачей по ссылке в JavaScript?

В JavaScript есть два способа передать аргументы функции: передать по значению и передать по ссылке.

Передача по значению означает, что когда переменная передается в качестве аргумента функции, копия ее значения создается и передается в функцию.

Любые изменения, внесенные в аргумент внутри функции, не повлияют на исходную переменную вне функции. Например:

let x = 5;

function changeValue(y) {
  y = 10;
}

changeValue(x);
console.log(x); // Output: 5

Передача по ссылке, с другой стороны, означает, что когда объект передается в качестве аргумента функции, передается ссылка на объект, а не копия его значения.

Это означает, что любые изменения, внесенные в объект внутри функции, повлияют на исходный объект вне функции. Например:

let obj = {value: 5};

function changeValue(y) {
  y.value = 10;
}

changeValue(obj);
console.log(obj.value); // Output: 10

Важно понимать разницу между передачей по значению и передачей по ссылке в JavaScript, так как это может существенно повлиять на поведение вашего кода.

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

Вопрос 8. Для чего нужен «строгий режим» в JavaScript и как его включить?

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

Например, строгий режим запрещает использование необъявленных переменных, что помогает предотвратить случайные глобальные переменные и другие проблемы, связанные с переменными. Это также предотвращает случайное изменение свойств, доступных только для чтения, таких как argumentsобъект, и устраняет использование некоторых устаревших функций, таких как withинструкция.

Чтобы включить строгий режим в JavaScript, вы можете добавить следующую строку вверху вашего скрипта или функции:

"use strict";

(function () {
  "use strict";
  // Your code here
})();

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

Вопрос 9: Как можно оптимизировать производительность кода JavaScript?

Существует несколько способов оптимизации производительности кода JavaScript, и некоторые из наиболее распространенных способов:

  1. Сокращение кода. Сокращение кода означает удаление всех ненужных символов, таких как пробелы и комментарии, а также сокращение имен переменных для уменьшения размера кода. Меньший размер кода означает меньшее количество данных для передачи, что может привести к более быстрому времени загрузки.
  2. Использование кэширования. Кэшируя часто используемые данные, вы можете избежать избыточных вычислений и ускорить свой код. Вы можете кэшировать данные в локальных переменных или в кеше браузера.
  3. Избегайте блокировки основного потока: JavaScript — это однопоточный язык, а это означает, что он может выполнять только одно действие за раз. Если у вас есть длительная задача, она заблокирует основной поток, в результате чего страница перестанет отвечать на запросы. Чтобы избежать этого, вы можете использовать методы асинхронного программирования, такие как обратные вызовы или промисы, чтобы разгрузить длительную задачу в рабочий поток.
  4. Избегайте использования глобальных переменных: глобальные переменные могут замедлить ваш код, потому что они доступны из любой точки кода, и они могут вызвать конфликты с другими переменными с тем же именем. Вместо этого используйте локальные переменные внутри функций, которые работают быстрее и менее подвержены конфликтам.
  5. Используйте отложенную загрузку: отложенная загрузка — это метод загрузки только необходимого контента, а не всей страницы сразу. Делая это, вы можете уменьшить объем данных, которые необходимо передать и обработать, что приведет к ускорению загрузки.
  6. Используйте правильные структуры данных. Выбор правильной структуры данных для вашего кода может существенно повлиять на производительность. Например, использование массива для поиска, сортировки и обработки больших наборов данных может быть медленным, в то время как использование объекта или карты может быть намного быстрее.
  7. Профилирование. Профилирование кода помогает выявить узкие места и оптимизировать производительность кода. Вы можете использовать DevTools в своем браузере, чтобы профилировать свой код и находить области, которые нуждаются в улучшении.

// Minifying the code
const name = "John Doe";
console.log("Hello, " + name);

// Becomes:
const n="John Doe";console.log("Hello, "+n);

// Using caching
const myArray = [1, 2, 3, 4, 5];
function sumArray(array) {
  let sum = 0;
  for (let i = 0; i < array.length; i++) {
    sum += array[i];
  }
  return sum;
}

let sum = sumArray(myArray);
console.log(sum);

// Using proper data structures
const data = [1, 2, 3, 4, 5];

let sum = 0;
for (let i = 0; i < data.length; i++) {
  sum += data[i];
}
console.log(sum);

// Becomes:
const data = new Map([[1, 1], [2, 2], [3, 3], [4, 4], [5, 5]]);

let sum = 0;
for (const value of data.values()) {
  sum += value;
}
console.log(sum);

<=====>

Если вы хотите узнать больше о программировании на Javascript, обязательно подпишитесь на меня, чтобы получить дополнительные фрагменты кода и примеры. Я буду делиться ценной информацией и советами о том, как освоить язык и улучшить свои навыки разработчика. Итак, следите за обновлениями, и давайте продолжим учиться вместе.

Спасибо за прочтение. Удачного обучения

Поддержите нашу публикацию, подписавшись на нее

Интеграция Splunk с SpringBoot, часть — 1 Взлом кликов и меры по его предотвращению Самосовершенствование : путь личного роста Интеграция Splunk с SpringBoot — часть 2 Строка в преобразовании и продвижении Javascript в интеграции Java Splunk с SpringBoot — заключительная часть