Есть ли константы в JavaScript?

Да. Это возможно.

Html


 
image

JS

 function showMyImage(fileInput) {
        var files = fileInput.files;
        for (var i = 0; i < files.length; i++) {           
            var file = files[i];
            var imageType = /image.*/;     
            if (!file.type.match(imageType)) {
                continue;
            }           
            var img=document.getElementById("thumbnil");            
            img.file = file;    
            var reader = new FileReader();
            reader.onload = (function(aImg) { 
                return function(e) { 
                    aImg.src = e.target.result; 
                }; 
            })(img);
            reader.readAsDataURL(file);
        }    
    }

Здесь вы можете получить Live Demo .

1107
задан Stevoisiak 21 August 2017 в 15:12
поделиться

7 ответов

С тех пор ES2015, JavaScript имеет понятие const :

const MY_CONSTANT = "some-value";

Это будет работать в в значительной степени все браузеры кроме IE 8, 9 и 10 . Некоторым, возможно, также понадобится , строгий режим включил.

можно использовать var с соглашениями как ALL_CAPS, чтобы показать, что определенные значения не должны быть изменены, если Вы должны поддерживать более старые браузеры или работаете с унаследованным кодом:

var MY_CONSTANT = "some-value";
1000
ответ дан railgun 21 August 2017 в 15:12
поделиться

Я использую const вместо var в моих сценариях Механика, но это - потому что они будут работать только на Firefox...
Соглашение о присвоении имен может быть действительно способом пойти, также (я делаю обоих!).

4
ответ дан PhiLho 21 August 2017 в 15:12
поделиться

Некоторое время я определил "константы" (которые все еще не были на самом деле константами) в литералах объектов, переданных до with() операторы. Я думал, что это было настолько умно. Вот пример:

with ({
    MY_CONST : 'some really important value'
}) {
    alert(MY_CONST);
}

В прошлом я также создал CONST пространство имен, куда я поместил бы все свои константы. Снова, с издержками. Sheesh.

Теперь, я просто делаю var MY_CONST = 'whatever'; к KISS.

7
ответ дан Andrew Hedges 21 August 2017 в 15:12
поделиться

Нет, не в целом. Реализации Firefox const, но я знаю, что IE не делает.

<час>

@John указывает на общую практику именования для consts, который использовался в течение многих лет на других языках, я не вижу оснований, почему Вы не могли использовать это. Конечно, это не означает, что кто-то не перепишет значение переменной так или иначе.:)

24
ответ дан Community 21 August 2017 в 15:12
поделиться

Вы пытаетесь защитить переменные от модификации? Если так, тогда можно использовать шаблон модуля:

var CONFIG = (function() {
     var private = {
         'MY_CONST': '1',
         'ANOTHER_CONST': '2'
     };

     return {
        get: function(name) { return private[name]; }
    };
})();

alert('MY_CONST: ' + CONFIG.get('MY_CONST'));  // 1

CONFIG.MY_CONST = '2';
alert('MY_CONST: ' + CONFIG.get('MY_CONST'));  // 1

CONFIG.private.MY_CONST = '2';                 // error
alert('MY_CONST: ' + CONFIG.get('MY_CONST'));  // 1

Используя этот подход, значения не могут быть изменены. Но, необходимо использовать получать () метод на КОНФИГУРАЦИИ: (.

, Если Вы не должны строго защищать значение переменных, тогда просто, сделайте, как предложено и используйте соглашение ВСЕХ ЗАГЛАВНЫХ БУКВ.

304
ответ дан Burke 21 August 2017 в 15:12
поделиться

const ключевое слово находится в проекте ECMAScript 6, но это к настоящему времени только обладает поверхностным знанием поддержки браузера: http://kangax.github.io/compat-table/es6/. Синтаксис:

const CONSTANT_NAME = 0;
121
ответ дан 19 December 2019 в 20:16
поделиться

IE поддерживает константы, вроде того, например:

<script language="VBScript">
 Const IE_CONST = True
</script>
<script type="text/javascript">
 if (typeof TEST_CONST == 'undefined') {
    const IE_CONST = false;
 }
 alert(IE_CONST);
</script>
64
ответ дан 19 December 2019 в 20:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: