Я хотел бы иметь возможность определять константу в глобальной области видимости из функции. Для обычной переменной это было бы возможно, определив ее вне функции и установив ее значение внутри функции, как показано ниже:
var carType;
function carType(){
carType = 'Reliant Robin';
}
Однако вы не можете определить глобальные переменные без установки значения, поэтому это не будет работать с константой, есть ли способ обойти это?
const carType; - это недопустимый синтаксис.
@PatrickRoberts Я знаю: «Однако вы не можете определить глобальные переменные, не установив значения, поэтому программа завершится ошибкой на первой строке». Я спрашиваю, есть ли способ обойти это
Однако вы можете определять глобальные переменные, не устанавливая значения. var carType;
@PatrickRoberts "Я бы хотел определить константу"
Если вы объявляете переменную до ее определения, она по определению не является константой, поэтому ваш запрос не имеет смысла.
Вопрос в том, можно ли определить глобальную константу из функции, и пример кода должен был показать, как вы могли бы это сделать, если бы это была обычная переменная «С нормальной переменной это было бы возможно ...». Я знаю, что это невозможно сделать с константой, поэтому я задаю вопрос, я хотел бы знать, есть ли способ определить константу, доступную из глобальной области видимости внутри функции.
Короткий ответ - нет - вы не можете создать глобальный идентификатор const, позволять или класс в глобальной области, используя объявления внутри функции или используя eval. Я рассмотрел случай eval для этот ответ относительно области действия.
Похоже, вы неправильно поняли смысл моего комментария. Возможно определение глобального изнутри функции, и вы даже можете сделать его недоступным для записи и не настраиваемым, но поскольку вы определяете его изнутри функции, нет смысла даже называть его константой.
@PatrickRoberts Я понимаю, что вы говорите, причина, по которой я хотел бы использовать его в этом случае, заключается в функции, которая запускается только один раз и настраивает множество функций, которые я использую (которые я хотел бы сделать константами). Я определяю эти функции в другой функции, поэтому я могу убрать все функции с дороги, но сделать их доступными для выполнения в нужном месте кода.
Вы должны загрузить свои константы в модуль, а require() или import - в модуль везде, где необходимо ссылаться на константы.
@PatrickRoberts Я обычно делал это, но в этом случае они представляют собой основную часть моего кода, поэтому я определяю их после их вызова, чтобы основной код был легко виден в верхней части файла. В сценарии было бы всего несколько строк, если бы я включил их из другого файла.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Ответ - «да», но это не типичное заявление, см. Фрагмент кода ниже.
function carType(){
Object.defineProperty(window, 'carType', {
value: 'Reliant Robin',
configurable: false,
writable: false
});
}
carType();
carType = 'This is ignored'
console.info(carType);
Вы можете установить ненастраиваемое свойство для глобального объекта, но это все равно запах кода.