2014-06-24 5 views
1

У меня есть небольшой javascript, который имеет объявленный глобальный массив. Значения для этого массива заполняются внутри функции foo(), как указано ниже:Передача глобального массива javascript на другую функцию

<html> 
<head></head> 
<body> 
<script> 
    var myArray = []; 

    function foo() { 
    var j = 5; 
     for (var i = 0; i < j; i++) { 
     myArray.push(i+1); 
     } 
    } 

    function bar() { 
    alert(myArray); 
    } 

</script> 
</body> 
</html> 

Когда я пытаюсь получить доступ к этому массиву в другой Javascript функция bar(), значения массива равны нулю. Как я могу это исправить?

+2

Вы никогда не называют 'Foo' – vaultah

+0

вызова Foo() перед баром() –

+0

+1 хорошо его шутка :) – InferOn

ответ

1

Вы определили функцию, но никогда ее не называли.

Try вызова foo() и bar() как этот

var myArray = []; 

function foo() { 
    var j = 5; 
    for (var i = 0; i < j; i++) { 
     myArray.push(i+1); 
    } 
    } 

function bar() { 
    alert(myArray); 
} 

foo(); 

bar(); 

JSFiddle

+0

Но в этом случае: http://jsfiddle.net/W6jgh/1/ ??? – mpsbhat

+0

Используйте мой метод, он будет работать на вас – Bharath

+1

@mpsbhat вы не понимаете. просто определяя метод/функцию, которую вы не выполняете, вам нужно вызвать ее. в вашем случае см. это [JSFiddle] (http://jsfiddle.net/NavinKrishnan/W6jgh/2/) – Navin

1

Если вы собираетесь вызвать бар() прямо тогда.

<script> 

    function foo(myArray) { 

      var j = 5; 

      for (var i = 0; i < j; i++) { 

       myArray.push(i+1); 

      } 

     return myArray; 
    } 

    function bar() 
    { 
     alert(foo([])); 
    } 

    bar(); 

// or 

    alert(foo([])); 

</script> 

Постарайтесь избежать многих глобальных переменных, как вы можете,

+0

Не работает: http://jsfiddle.net/U5L9w/1/ – mpsbhat

+0

Обновлена ​​проверка сейчас, – Bharath

Смежные вопросы