2010-05-12 3 views
35

Я использую визуальные студии 2010 и создал файл JavaScript (jscript.js), и я видел на одной странице говорю, что вы можете сделать постоянную переменные в JavaScript, как:Можете ли вы использовать постоянные переменные в javascript?

const x = 20; 

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

Также в Visual studio, когда я пишу «const», он подчеркивает его в файле javascript и выводит синтаксическую ошибку.

+0

Ответ: [babel] (https://babeljs.io/docs/learn-es2015/#let-const) – Qwerty

ответ

39

const is a proposed feature of ECMAScript Harmony (вместе с соответствующим блоком let предполагается заменить var и неявные глобальные). ECMAScript Harmony - это захватывающая идея для следующих версий ECMAScript.

const также была частью ECMAScript 4.

ECMAScript-никогда не было выпущен, и никогда не будет, и ECMAScript Harmony будет выпущен только в течение нескольких лет. Поэтому вы не можете надежно использовать его.

Существуют некоторые реализации или производные от ECMAScript, которые реализуют const (например, ActionScript). Есть также несколько реализаций, которые принимают const как синоним var (IOW, вы можете использовать const, но это не даст вам никакой защиты.)

Однако, если вы абсолютно не можете гарантировать, что ваш код будет работать только на очень конкретные версии очень специфических реализаций очень специфических производных ECMAScript, вероятно, лучше избегать этого. (Что это настоящий позор, потому что const и особенно let является улучшением огромного над var и неявными глобал.)

+0

Ya, которое не принесет мне никакой пользы. Это отстой, они действительно должны иметь хотя бы const в javascript. – chobo2

+0

Этот ответ устарел. Существуют транспиллеры, такие как [babel] (https://babeljs.io/docs/learn-es2015/#let-const), которые позволяют использовать новые функции ES в обычном браузере. – Qwerty

+2

['const' не для констант] (https://mathiasbynens.be/notes/es6-const) (как в« постоянных значениях »). Это для постоянных * привязок *. –

3

В ECMAScript нет const (без учета мертвой версии 4.0 и ActionScript).

const можно найти в JScript.NET и некоторых recent versions of JS engines, например. Firefox, Opera 9, Safari в качестве расширения для конкретного поставщика.

+0

Хм, я не уверен, что такое Jscript.net. Может ли он использоваться с jquery и другими? – chobo2

+0

@ chobo2: JScript - это версия Javascript для Microsoft (я думаю, проблема с товарным знаком). JScript.NET является расширением JScript для платформы .NET, например C# и VB.NET. Я не думаю, что вы можете использовать jQuery с ним, поскольку JScript.NET никогда не доступен в браузере. – kennytm

+0

['const'] (https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Statements/const) также доступен в реализациях Mozilla (Rhino, SpiderMonkey) – CMS

0

Нет, данных нет «const» в JavaScript.

JavaScript - это свободно типизированный язык. Каждый вид переменной объявляется с вар

+9

Ловкость набора символов немного ортогональна постоянству привязки, не так ли? – pilcrow

+0

Это действительно так. Я имел в виду, что в JavaScript нет специальных типов данных (int, string, const). – Rajat

25

, если вы ищете переменную только для чтения, вы имитировать, что с чем-то вроде

var constants = new (function() { 
    var x = 20; 
    this.getX = function() { return x; }; 
})(); 

, а затем использовать его как

constants.getX() 
+0

Что делать, если переменная 'constants' сама модифицирована? –

+1

@BharatKhatri, если кто-то пересматривает ваши объекты на лету, это не имеет большого значения, что вы делаете. – lincolnk

+0

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

2

Я считаю, что это то, что не с вар, является глобальным переменным .... есть no const в js.

var a="test" отличается от a="test"

0

проверить этот док, он описывает, как использовать сопзЬ в JavaScript

http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml

+0

Это ссылки на стандарт Google для создания vars, который не следует перезаписывать и не имеет никакого отношения к фактическому созданию константы. Тем не менее, это не плохой подход к использованию vars как consts в вашем коде, но не дает вам никакой защиты от записи, если вы не применяете его в модульных тестах. – Fergal

4

Решение состоит в том, чтобы создать объект и поместить все константы в объекте :

const={}; 

const.x=20; 

const.y=30; 

Object.freeze(const); // finally freeze the object 

Использование:

var z=const.x + const.y; 

Любая попытка изменить переменную будет генерировать ошибку:

const.x=100; <== raises error 
2

JavaScript ES6 (пере) представил const keyword, который поддерживается в all major browsers.

Variables declared via const cannot be re-declared or re-assigned.

Кроме того, const ведет себя похоже на let.

Он ведет себя, как ожидается, для примитивных типов данных (Boolean, Null, Неопределенная, Number, String, Symbol):

const x = 1; 
x = 2; 
console.log(x); // 1 ...as expected, re-assigning fails 

Внимание: Будьте в курсе ловушек в отношении объектов:

const o = {x: 1}; 
o = {x: 2}; 
console.log(o); // {x: 1} ...as expected, re-assigning fails 

o.x = 2; 
console.log(o); // {x: 2} !!! const does not make objects immutable! 

const a = []; 
a = [1]; 
console.log(a); // 1 ...as expected, re-assigning fails 

a.push(1); 
console.log(a); // [1] !!! const does not make objects immutable 
Смежные вопросы