2017-02-16 4 views
0

Просто прочитайте, что (const) Behavior will vary across browser implementations. Ответ, на который я указал, довольно старый (2012), так что все еще так плохо?Javascript: работа с константами и кросс-браузерная совместимость

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

Если «да» - как его заменить?

UPD:

Только что проверил описание на developer.mozilla.org. И ДА: похоже, что это плохо ...

enter image description here

+0

Это вопрос, связанный с ES6 const и переносящий эти ссылки на браузеры, которые этого не поддерживают. Поэтому вам понадобится транспилер ('babel'), чтобы браузеры ES5, такие как IE 11 (и ниже), могли запускать ваши js. –

+0

@siam Как я понимаю, переменная, определенная с помощью 'const', имеет некоторую защиту. Поэтому я бы сказал, что было бы неплохо использовать их ... Если это невозможно, я не вижу серьезных причин, чтобы избежать «var». Не могли бы вы опубликовать это как ответ, чтобы позволить мне принять его? Благодаря! –

+0

@siam 'var' не эквивалентен' let' или 'const'. –

ответ

1

const не доступен в старых браузерах (я смотрю на вас, IE, Safari).

Если вы хотите играть в безопасное место, и у вас нет шага сборки (Babel, TypeScript и т. Д.), Используйте только var. Оба Babel и TypeScript скомпилируют ваши const s и let s до var s. Поэтому, если вы используете любой из этих инструментов, вы можете свободно использовать const и let.

Помните, что var не является строго эквивалентным ни let, ни const. (var поднят и имеет разный объем).

Кроме того, если вы не заботитесь об IE или Safari, вы можете в значительной степени использовать const без инструмента построения.

+0

[Скажите что?] (Http://i.imgur.com/v1c78yE.png) – deceze

+0

@deceze Попробуйте Safari на устройствах iOS, которые все еще находятся на рынке сегодня, и скажите, будет ли он применяться. –

+0

Это важный квалификатор. :) – deceze

0

Вы можете просто использовать var вместо const для поддержки старых браузеров. (** помните, var не является эквивалентом const до некоторой степени) и для защиты var от изменения вы можете просто поместить его в закрытую область вместо глобального. (так что это будет работать частично как const)

Смежные вопросы