Можно ли определить глобальную константу из функции в javascript

Я хотел бы иметь возможность определять константу в глобальной области видимости из функции. Для обычной переменной это было бы возможно, определив ее вне функции и установив ее значение внутри функции, как показано ниже:

var carType; 

function carType(){

    carType = 'Reliant Robin';

}

Однако вы не можете определить глобальные переменные без установки значения, поэтому это не будет работать с константой, есть ли способ обойти это?

Вы можете установить ненастраиваемое свойство для глобального объекта, но это все равно запах кода.

CertainPerformance 02.01.2019 03:17
const carType; - это недопустимый синтаксис.
Patrick Roberts 02.01.2019 03:19

@PatrickRoberts Я знаю: «Однако вы не можете определить глобальные переменные, не установив значения, поэтому программа завершится ошибкой на первой строке». Я спрашиваю, есть ли способ обойти это

Henry Howeson 02.01.2019 03:21

Однако вы можете определять глобальные переменные, не устанавливая значения. var carType;

Patrick Roberts 02.01.2019 03:22

@PatrickRoberts "Я бы хотел определить константу"

Henry Howeson 02.01.2019 03:24

Если вы объявляете переменную до ее определения, она по определению не является константой, поэтому ваш запрос не имеет смысла.

Patrick Roberts 02.01.2019 03:25

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

Henry Howeson 02.01.2019 03:28

Короткий ответ - нет - вы не можете создать глобальный идентификатор const, позволять или класс в глобальной области, используя объявления внутри функции или используя eval. Я рассмотрел случай eval для этот ответ относительно области действия.

traktor 02.01.2019 03:32

Похоже, вы неправильно поняли смысл моего комментария. Возможно определение глобального изнутри функции, и вы даже можете сделать его недоступным для записи и не настраиваемым, но поскольку вы определяете его изнутри функции, нет смысла даже называть его константой.

Patrick Roberts 02.01.2019 03:33

@PatrickRoberts Я понимаю, что вы говорите, причина, по которой я хотел бы использовать его в этом случае, заключается в функции, которая запускается только один раз и настраивает множество функций, которые я использую (которые я хотел бы сделать константами). Я определяю эти функции в другой функции, поэтому я могу убрать все функции с дороги, но сделать их доступными для выполнения в нужном месте кода.

Henry Howeson 02.01.2019 03:38

Вы должны загрузить свои константы в модуль, а require() или import - в модуль везде, где необходимо ссылаться на константы.

Patrick Roberts 02.01.2019 03:40

@PatrickRoberts Я обычно делал это, но в этом случае они представляют собой основную часть моего кода, поэтому я определяю их после их вызова, чтобы основной код был легко виден в верхней части файла. В сценарии было бы всего несколько строк, если бы я включил их из другого файла.

Henry Howeson 02.01.2019 03:48
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
5
12
2 674
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ответ - «да», но это не типичное заявление, см. Фрагмент кода ниже.

function carType(){
  Object.defineProperty(window, 'carType', {
    value: 'Reliant Robin',
    configurable: false,
    writable: false
  });
}

carType();
carType = 'This is ignored'
console.info(carType);

Другие вопросы по теме