2015-01-11 9 views
-1

Как получить информацию, которая находится внутри функции, из-за пределов функцииГлобальные и локальные переменные JavaScript

var x = 0; 

function myFunction() { 
    x += 1 //When a button is clicked Javascript will add 1 to x, now x will have a value of 1 

} 

alert(x) //This returns 0, how to make it return 1 

P.S Только чистый JavaScript
P.P.S Постарайтесь, чтобы ваш ответ простой, без большого количества кода. Спасибо :)

+1

Подождите, пока функция не будет выполнена, может быть? – Bergi

ответ

1

Его следует называть myFunction, myFunction(), сначала перед предупреждением. Вот почему вы получаете 0. Когда этот скрипт загружается, значение x равно 0. Следовательно, предупреждение будет предупреждать 0. Тогда каждый раз, когда пользователь нажимает кнопку, на которую вы ссылались, значение x будет увеличиваться на 1. При этом, я думаю, что вам нужно что-то вроде этого:

function myFunction() { 
    // when the button will be clicked the value of x 
    // would be incremented by one. 
    x += 1 

    // the new value would be alerted. 
    alert(x); 
} 

Другой способ это будет так:

myFunction(); 
alert(x); 

Однако, это не имеет смысла, так как вам нужно увеличить значение от x каждый раз, когда нажимается кнопка, и вам не нужно принудительно выполнять myFunction.

1

Ну, ваша функция должна быть выполнена для этого. Тело функции выполняется только при вызове/вызове. Так как создать функцию IIFE или вызвать его позже

myFunction(); 
alert(x); // now the value has been updated 

По IIFE (Сразу Вызывается функция Expresson), я имею в виду

(function(){ 
    x += 1; 
})(); // invoke 
+0

Спасибо, что сработали. – MThead

2

Вы должны вызвать MYFUNCTION() первый, например:

myFunction(); 
alert(x); 
0

начало от Colling ваш myFunction();, а затем вы можете получить значение по alert(x);

0

Другие ответы правильны в этой ситуации - просто позвоните myFunction(); перед тем alert(x), но только для полноты картины, другой вариант, чтобы «получить информацию внутри функция из за ее пределами», чтобы вернуть значение из функции:

var x = 0; 
 

 
function myFunction() { 
 
    return x + 1; // returns 0 + 1 = 1. Note x is still 0 
 
} 
 

 
var y = myFunction(); // y stores the return value of the function, i.e. 1 
 
alert(y);

0

Отъезд:

http://jsfiddle.net/4taojgy7/

(function(){ 
    var x=10; 
    function run(){ 
    alert(x); 
    } 
    run(); 
})(); 

Function 'запустить' может получить доступ только те переменные, которые находится в области видимости. Даже если переменная 'x' определена снаружи, но все же доступна. Вам нужно больше взглянуть на область действия переменной. Надеюсь, что это прояснится.