Как мне создать глобально доступную переменную?

#javascript #global-variables

#javascript #глобальные переменные

Вопрос:

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

Как мне это сделать? Я искал уже около 1 часа и не могу ее найти : (

Я пробовал это

 noneTxt = document.innerHTML="Nothing is playing!";

function plinf() {
    if (myAudio.paused) {
        myAudio.play();
    }
    else {
    myAudio.pause();
    document.getElementById('message').innerHTML=noneTxt;
    }
}
  

Но это работает, только если я помещаю переменную внутри функции с префиксом var…
Итак, как я могу сделать ее своего рода глобальной? :/

Комментарии:

1. Хм, что вы имеете в виду под document.innerHTML ? Это свойство не существует. Ее установка ничего не даст.

2. @lonesomeday Вероятно, это работает на какой-то малоизвестной версии IE или NN.

Ответ №1:

вы всегда можете использовать window object для присоединения вашей «глобальной» переменной, но это не очень хорошая идея, может вызвать коллизии с другими способами использования

 window.noneTxt = document.innerHTML="Nothing is playing!";
  

Ответ №2:

Если вы можете управлять несколькими файлами JS, создайте новый файл javascript с именем что-то вроде «globals.js » и поместите туда все ваши глобальные переменные:

 var g1 = "this is a global var";
var g2 = "another global var";
  

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

The ‘globals.js ‘ файл также может включать в себя удобные функции, такие как ‘getVar(varname)’.

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

 var globals = {
  g1: "this is a global var",
  g2: "another global var"
};

function getGlobalVar(varname) {
  if (typeof(globals[varname]) === 'undefined') {
    return "some default";
  } else {
    return globals[varname];
  }
}
  

-DBG

Ответ №3:

вы можете создать общедоступную функцию, которая имеет доступ к частным переменным, например, так

 function Person() {
    var secret = "Secret Message";

    this.revealSecret = function() {
        return secret;
    }
}
var me = new Person();
me.revealSecret(); //returns "Secret Message"