Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   объявить переменную один раз (https://javascript.ru/forum/misc/66507-obyavit-peremennuyu-odin-raz.html)

Sergey and 19.12.2016 19:12

объявить переменную один раз
 
Можно сделать что бы переменная объявлялась только один раз? Как то так
var counttime;
if(tepeof counttime === "undefined"){
    var counttime=0;
}

fuckingquest 19.12.2016 20:33

Sergey and,
В JS, объявление переменной не требуется, и такого понятия, как объявление, практически нет. срзазу присваивание. Если Вы делаете псевдообъявление, как в вашем примере, эта переменная просто сеттится в undefined

Sergey and 19.12.2016 21:11

Уже прочитал. Сильно не ругайте я с javascript только начал разбираться. Есть проблема переменная переопределяется или перезаписывается.(
worker.js
var connected = false;
var data=1;
self.addEventListener("connect", e => {
  e.source.addEventListener("message", ev => {
    if (ev.data === "start") {
      if (connected === false) {
               connected = true;
      } else {
      

      }
    }
  }, false);
  e.source.start();
}, false);

Если открываю новую вкладку то переменные data и connected  перезаписываются (
index.html
<script>
    let worker = new SharedWorker('worker.js');
    worker.port.addEventListener("message", e => {
      console.log(e.data);
    }, false);
    worker.port.start();
    worker.port.postMessage("start");
</script>

fuckingquest 19.12.2016 21:18

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

Sergey and 19.12.2016 21:28

ссылку бы на пример, или ключевые слова по которым гуглить.

fuckingquest 19.12.2016 21:31

ну, я же сказал, const
const a = 1
try{a = 2}catch(e){alert(a)}

fuckingquest 19.12.2016 21:35

Вот такая еще есть альтернатива
Object.defineProperty(window, "a", {value: 1, configurable: false})
alert(a); a = 2; alert(a)


Часовой пояс GMT +3, время: 14:10.