Часть 2. Самые распространенные (6–9) вопросы по JavaScript
JavaScript — это язык программирования, который стал одним из самых востребованных навыков в запросах на работу. Это многообразный язык, который используется для веб-разработки, разработки мобильных приложений, программирования на стороне сервера и многого другого.
В этом сообщении блога мы рассмотрим следующие 6–9 распространенных вопросов, которые часто задают на собеседованиях по JavaScript.
Вы можете обратиться к первой части 5 вопросов здесь
Часть 1. Самые распространенные (1–5) вопросы по 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, и некоторые из наиболее распространенных способов:
- Сокращение кода. Сокращение кода означает удаление всех ненужных символов, таких как пробелы и комментарии, а также сокращение имен переменных для уменьшения размера кода. Меньший размер кода означает меньшее количество данных для передачи, что может привести к более быстрому времени загрузки.
- Использование кэширования. Кэшируя часто используемые данные, вы можете избежать избыточных вычислений и ускорить свой код. Вы можете кэшировать данные в локальных переменных или в кеше браузера.
- Избегайте блокировки основного потока: JavaScript — это однопоточный язык, а это означает, что он может выполнять только одно действие за раз. Если у вас есть длительная задача, она заблокирует основной поток, в результате чего страница перестанет отвечать на запросы. Чтобы избежать этого, вы можете использовать методы асинхронного программирования, такие как обратные вызовы или промисы, чтобы разгрузить длительную задачу в рабочий поток.
- Избегайте использования глобальных переменных: глобальные переменные могут замедлить ваш код, потому что они доступны из любой точки кода, и они могут вызвать конфликты с другими переменными с тем же именем. Вместо этого используйте локальные переменные внутри функций, которые работают быстрее и менее подвержены конфликтам.
- Используйте отложенную загрузку: отложенная загрузка — это метод загрузки только необходимого контента, а не всей страницы сразу. Делая это, вы можете уменьшить объем данных, которые необходимо передать и обработать, что приведет к ускорению загрузки.
- Используйте правильные структуры данных. Выбор правильной структуры данных для вашего кода может существенно повлиять на производительность. Например, использование массива для поиска, сортировки и обработки больших наборов данных может быть медленным, в то время как использование объекта или карты может быть намного быстрее.
- Профилирование. Профилирование кода помогает выявить узкие места и оптимизировать производительность кода. Вы можете использовать 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 — заключительная часть
![В любом случае, что такое связанный список? [Часть 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































