2009-07-22 3 views
6

Как это сделать?Использование глобальной переменной в javascript

Мой код-то вроде этого:

var number = null; 

function playSong(artist,title,song,id) 
{ 
    alert('old number was: '+[number]+''); 


    var number = '10'; 

    alert(''+[number]+''); 
} 

Первое предупреждение всегда возвращает «старый номер был:» а не 10. Он не должен возвращать 10 на обоих оповещений о вызове второй функции?

+0

Черт Ya'll! Спасибо за все ответы так быстро. – ian

+1

Зачем вы пишете alert ('old number was:' + [number] + ''); , а не предупреждение ('старый номер был:' + номер); Потому что он будет предупреждать массив с одним элементом внутри, а не с элементом (номером) –

+0

Хммм не знаю, но он работает. Я не думаю, что он будет искать любой массив, потому что я соединяю пустое пространство с правой стороны + ''; или, может быть, я не знаю. – ian

ответ

15

С помощью var при установке число = «10», то объявляем number в качестве локальной переменной каждый раз. Попробуйте это:

var number = null; 

function playSong(artist,title,song,id) 
{ 
    alert('old number was: '+[number]+''); 


    number = '10'; 

    alert(''+[number]+''); 
} 
+0

Как вы получаете доступ к этой переменной из сайта функции playSong и получаете значение 10? – johnsnails

+0

@johnsnails Переменная объявляется вне функции, поэтому при назначении number = 10 ее фактически ссылается на глобальную переменную, но если мы используем var number = '10' в боковой функции, тогда она будет иметь локальную область, мы не получим значение 10 вне функции. –

11

Удалите переменную перед номером в вашей функции. Вы создаете локальную переменную

var number = 10; 

то, что вам нужно, это просто

number = 10; 
3

Проблема заключается в том, что вы объявляя новую переменную с именем number внутри функции. Эта новая переменная скрывает глобальную переменную number, поэтому строка number = 10 присваивает только этой новой локальной переменной.

Вам необходимо удалить ключевое слово var из var number = 10.

1

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

var number = 0; 

function playSong(artist,title,song,id) 
{ 
    alert('old number was: '+[number]+''); 
    number = '10'; 
    alert(''+[number]+''); 
} 
+0

Это обнадеживает, чтобы увидеть тот же ответ, отправленный в течение одной минуты. –

+2

Фактически любое определение без 'var' будет глобальной переменной, независимо от того, где она определена. Javascript может быть страшным. –

+0

Вы узнаете что-то новое каждый день. –

1

Вы также можете получить к нему доступ в любой функции, такой как window.number, после удаления функции var внутри.

0

Позвольте мне объяснить в деталях, чтобы объявить глобальную переменную и локальную переменную в JavaScript

var firstNumber=5;//local variable 
secondNumber=10; //global variable or window object 

Когда ваша программа, как этот

var number =1; 
function playSong() { 
    alert(number); 
    var number =2; 
    alert(number); 
} 

В соответствии с компилятором JavaScript все декларации/инициализации переменной будет двигаться вверх, эта концепция называется Подъем. Ссылка: https://www.w3schools.com/js/js_hoisting.asp

Согласно программе компилятор будет выполнять как

var number; //Declaration will move to top always in Javascript 
number=1; 
function playSong() { 
    var number; 
    alert(number); //output : undefied - This is local variable inside the function 
    number =2; 
    alert(number); // output : 2 
} 

Если вам необходимо получить доступ к глобальной переменной внутри использования функции window.number

var number =1; 
function playSong() { 
    var number =2; 
    alert(window.number); // output : 1 -From Global variable 
    alert(number); // output : 2 -From local variable 
} 
Смежные вопросы