Ответы на распространенные вопросы по JavaScript, Pt. 1
Недавно я нашел в Интернете несколько вопросов, которые одновременно увлекли меня и бросили вызов моим знаниям в области JavaScript и программирования в целом. Давайте погрузимся прямо в и изучить эти вопросы, с их ответами.
Похожи ли JavaScript и Python?
Ответ на этот вопрос и да, и нет. В некоторых смыслах или случаях они очень похожи, а в некоторых — нет.
Да, они похожи
И JavaScript, и Python являются языками сценариев. Языки сценариев или связующие языки — это языки программирования для специальной среды выполнения для автоматизации выполнения задач.
JavaScript использует браузер и/или среду выполнения Node.js в зависимости от того, является ли приложение браузерным или серверным. Python использует python.exe в качестве среды выполнения для интерпретации кода Python.
Другие сходства:
- Оба поддерживают несколько парадигм программирования, структурное и функциональное программирование.
- Оба имеют динамический тип.
- Оба могут использоваться для создания серверных частей веб-приложений.
- Оба довольно просты в освоении.
- Оба имеют очень обширную библиотеку.
Нет, они непохожи
Как бы я ни хотел признать, они также не похожи. JavaScript управляется событиями, асинхронен, хотя Python может делать то же самое, но это не его основная природа. Этот фактор в основном различает приложения и эффективность двух языков, делая один из них более подходящим для некоторых приложений, чем другой.
Другие отличия:
- JavaScript можно использовать для мобильных и интерфейсных приложений, а Python — нет.
- Python больше подходит и популярен в больших данных, искусственном интеллекте и машинном обучении, чем JavaScript.
- Python является объектно-ориентированным из коробки
Дополнительные ресурсы:
- https://www.freecodecamp.org/news/python-vs-javascript-what-are-the-key-differences-between-the-two-popular-programming-languages/
- https://www.python.org/doc/essays/comparisons/#:~:text=Python's%20%22object%2Dbased%22%20subset,JavaScript%2C%20это%20все%20есть%20есть.
- https://skillcrush.com/blog/python-vs-javascript/
Являются ли объекты JavaScript хэш-таблицами?
Согласно Википедии, хэш-таблица — это структура данных, которая реализует абстрактный тип данных ассоциативного массива, структуру, которая может отображать ключи в значения. Хеш-таблица использует хеш-функцию для вычисления индекса, также называемого хэш-кодом, в массив сегментов или слотов, из которых можно найти желаемое значение.
Объекты представляют собой сопоставления ключ-значение, и быстро или интуитивно понятно, что объекты JavaScript подобны ассоциативным массивам и, следовательно, под капотом будут хеш-таблицами. Но это неправильно!
Использованная литература:
- https://v8.dev/blog/fast-properties
- https://engineering.linecorp.com/en/blog/v8-hidden-class/#:~:text=A%20hidden%20class%20contains%20memory, offset%20of%20%20new%20property.
Хотя это в основном зависит от реализации, в самом популярном движке 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. Здоровья и до встречи в следующий раз 😉