Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Зачем в javascript нужны константы ? (https://javascript.ru/forum/misc/83130-zachem-v-javascript-nuzhny-konstanty.html)

goootlib 23.09.2021 17:07

Зачем в javascript нужны константы ?
 
Я новичок в js - пришёл сюда недавно из PHP. Прочитал учебник Ильи Кантора, учу Vue.js. Читая темы здесь на форуме и когда просматривал код React'а, заметил склонность некоторых js-программистов объявлять константы, а не переменные. Собственной мой вопрос - зачем стремиться к тому, чтобы объявлять всё через const, а не let ? Это первый вопрос. Второй вопрос заключается в следующем. Зачем некоторые программисты стараются использовать везде функции-стрелки вместо обычных функций, у них ведь нет this и нет arguments ? И последний, флеймовый вопрос. Какой js-фреймворк учить ? Правильно я сделал что выбрал Vue.js ? С чем вы бы посоветовали ознакомиться в первую очередь в фронтенд разработке кроме вёрстки ? Дайте какой-нибудь совет мне.

goootlib 23.09.2021 17:50

Цитата:

Сообщение от goootlib (Сообщение 540354)
Я новичок в js - пришёл сюда недавно из PHP. Прочитал учебник Ильи Кантора, учу Vue.js. Читая темы здесь на форуме и когда просматривал код React'а, заметил склонность некоторых js-программистов объявлять константы, а не переменные. Собственной мой вопрос - зачем стремиться к тому, чтобы объявлять всё через const, а не let ?

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

Aetae 23.09.2021 17:53

Юзать const для неизменных значений - хорошая привычка. Если ты случайно попытаешься изменить const - оно те не даст, в отличие от let\var. Потому в большинстве линтеров правила забиты которые приучают тебя к этому.)

На счёт выбора Vue я лично поддерживаю: лучший фреймворк, где надо думает за тебя, где надо позволяет свободу самовыражения.)
В React куча унылого никому не нужного микроконтроля и устаревшая неудобная система реактивности с бесполезным оверхэдом. Angular - прокрустово ложе с кучей мусора и boilerplate.

ksa 23.09.2021 18:06

Цитата:

Сообщение от goootlib
Но просто в PHP да и во всех остальных языках тоже есть константы, но там их таким образом не используют как в js.

Я х/з как в ПХП... :)
Но именно в некоторых ЯП константы так и используются. Их цель явно что-то определить и не давать потом модифицировать.

ksa 23.09.2021 18:09

Цитата:

Сообщение от goootlib
Зачем некоторые программисты стараются использовать везде функции-стрелки вместо обычных функций, у них ведь нет this и нет arguments ?

С чего ты взял что они это делают именно "везде"? :)
Очевидно стрелочные функции используются там где их можно использовать. Иначе были бы проблемы с выполнением кода...

ksa 23.09.2021 18:12

Цитата:

Сообщение от goootlib
Какой js-фреймворк учить ?

Почитай про все... Выбери (для начала) тот, который тебе больше будет понятен.
Но выгоднее знать про все, т.к. не понятно в какую контору тебе придется устраиваться и что там будут требовать...

voraa 23.09.2021 18:50

Цитата:

Сообщение от goootlib
Но просто в PHP да и во всех остальных языках тоже есть константы, но там их таким образом не используют как в js.

Ну в С++ как раз так константы и используют, особенно с указателями.
Цитата:

Сообщение от goootlib
Зачем некоторые программисты стараются использовать везде функции-стрелки вместо обычных функций, у них ведь нет this и нет arguments ?

Далеко не во всех функциях используется this, а arguments и того реже.
А запись стрелочных функций короче. Ну и кроме того, что не надо при вызове тащить this и arguments у интерпретатора появляются дополнительные возможности для оптимизации.

ksa 23.09.2021 21:30

Уже прям интрига повисла! :D
goootlib, каким же образом используются константы в тех "во всех остальных языках"? :blink:

Aetae 24.09.2021 00:25

Цитата:

Сообщение от voraa (Сообщение 540360)
Ну и кроме того, что не надо при вызове тащить this и arguments у интерпретатора появляются дополнительные возможности для оптимизации.

На счёт "тащить this" - спорный аргумент. ИМХО как раз стрелки "тащат" this - они вынуждены запоминать this окружения и использовать оный откуда бы их не вызывали, в то время как для обычных функций this скорее что-то вроде скрытого простого аргумента: some.func(a) -> func(this = some, a) и на производительность с памятью влиять не должен.)

voraa 24.09.2021 08:50

Цитата:

Сообщение от Aetae
ИМХО как раз стрелки "тащат" this - они вынуждены запоминать this окружения

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

Alexandroppolus 24.09.2021 09:12

Я думаю, что если функция не использует внутри себя this или arguments (и не вызывает eval), то для оптимизирующего компилятора пофиг, стрелочная она или нет

goootlib 24.09.2021 13:46

Всем спасибо за ответы. На счёт всех остальных языков, помимо js и php, я сказать не могу. Но я встретился с таким использованием констант впервые в js, а не php.

Rise 29.09.2021 23:44

KingdaKa,
Не меньше года интенсивных занятий.

ksa 30.09.2021 08:27

Цитата:

Сообщение от KingdaKa
потому что слабая типизация как в PHP и JS - это с одной стороны кажется упрощает создание кода, а с другой ведет к его ненадежности и куче ошибок.

Криворуким и типизация не особо поможет... :D

voraa 30.09.2021 09:47

Цитата:

Сообщение от ksa
Криворуким и типизация не особо поможет...

По мне, ошибки связанные с типизацией не самые распространенные в JS.
Просто некоторым, приходящим в в JS из C/C++, кажется неправильным, что нет типов. Вот и стонут - мы без типов не можем, не умеем, все время ошибаемся...

voraa 30.09.2021 09:58

Цитата:

Сообщение от KingdaKa
Чтобы создавать интерактивные страницы, несложные игры и т.д.

Цитата:

Сообщение от Rise
Не меньше года интенсивных занятий.

И на что там год нужен?
JS достаточно прост. Понять про типы (примитивные, и то, что остальное - объекты). Запомнить встроенные правила преобразования типов. Понять прототипное наследование. Все остальное мало отличается от других ЯП.
Ну какое то время потратить на изучение "стандартной" библиотеки.

Я тут не говорю про всевозможные АПИ. Это к языку отношения не имеет. Изучение АПИ зависит от конкретной задачи. Для страниц хватит DOM, ну может что еще по мелочам. Не самая сложная вещь.

Rise 30.09.2021 11:46

Цитата:

Сообщение от voraa
И на что там год нужен?

На учебник - это 1500+ страниц. На экосистему - это node.js, webpack, babel и т.п. На практику - это много чтения чужого и написания своего кода. Он ведь хочет хороший уровень в JS.

Vlasenko Fedor 30.09.2021 13:32

Книжки молодежь считает пережитком прошлого
А вот видосики Учим JavaScript за 1 час самое то

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


Часовой пояс GMT +3, время: 18:23.