Ответы на распространенные вопросы по JavaScript, Pt. 1

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

Похожи ли JavaScript и Python?

Ответ на этот вопрос и да, и нет. В некоторых смыслах или случаях они очень похожи, а в некоторых — нет.

Да, они похожи

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

JavaScript использует браузер и/или среду выполнения Node.js в зависимости от того, является ли приложение браузерным или серверным. Python использует python.exe в качестве среды выполнения для интерпретации кода Python.

Другие сходства:

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

Нет, они непохожи

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

Другие отличия:

  • JavaScript можно использовать для мобильных и интерфейсных приложений, а Python — нет.
  • Python больше подходит и популярен в больших данных, искусственном интеллекте и машинном обучении, чем JavaScript.
  • Python является объектно-ориентированным из коробки

Дополнительные ресурсы:

Являются ли объекты JavaScript хэш-таблицами?

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

Объекты представляют собой сопоставления ключ-значение, и быстро или интуитивно понятно, что объекты JavaScript подобны ассоциативным массивам и, следовательно, под капотом будут хеш-таблицами. Но это неправильно!

Использованная литература:

Хотя это в основном зависит от реализации, в самом популярном движке V8, используемом в chrome, edge и Node.js, объекты не реализуются с помощью хеш-таблиц, а используется нечто более хитроумное, скрытый класс. Всякий раз, когда создается объект, создается скрытый класс. Когда свойство добавляется к объекту, скрытый класс дублируется, и свойство добавляется в новый класс, сохраняя ранее скрытый класс, теперь объект ссылается на последний созданный скрытый класс. Это имеет два основных преимущества; доступ к свойствам не требует поиска в словаре, и V8 может использовать классическую оптимизацию на основе классов — встроенное кэширование.

Являются ли переменные JavaScript глобальными?

В JavaScript все переменные имеют область видимости. Они в основном определяют или ограничивают доступность данных переменной. В JavaScript есть две области видимости; локальная область действия и глобальная область действия.

Глобальный охват

Любая переменная, определенная вне функции с помощью «var», является глобальной переменной и будет доступна для всех функций.

var x = 1;
function foo(){
 console.log(x); // 1
}

Любая переменная, к которой обращаются внутри функции без объявления, становится глобальной функцией.

function foo(){
 x = 1;
}
function bar(){
 console.log(this.x); // 1
}

Локальная область

Любая переменная, объявленная внутри функции, будет иметь локальную область видимости, она будет доступна только внутри функции и блоков внутри нее. Внешние функции не смогут получить доступ к переменной.

function foo(){
 var x = 1;
 console.log(x); // 1
}
function bar(){
 console.log(x); // undefined
 console.log(this.x); // undefined
}

В общем, в зависимости от того, как вы объявите свою переменную, она будет глобальной. Кроме того, пожалуйста, не используйте var в объявлениях ваших переменных, используйте let и const.

Спасибо, что нашли время прочитать. Я буду освещать больше вопросов с краткими ответами для JavaScript. Здоровья и до встречи в следующий раз 😉