2011-07-06 8 views
0

Googleマップで作業しています。アイテムの配列を作成する必要があります。ここに私の擬似コードがあります:JavaScriptでグローバル変数にアクセスする際の問題

<script> 
var myvar=new array(); 

function initialize(){ 
    for i=1 to 10 
    { 
     callAnotherFunct(i); 
    } 

    access myvar() here; 
} 


function callAnotherFunct(i){ 
    myvar=array_element_i; 
} 

</script> 

私はmyvarがグローバル変数として動作すると期待していますが、そうではありません。 initialize()でmyvarの値を取得できません。

私はここで間違っていますか?

+1

と考えることができる唯一の問題は、我々は、実際のコードを見せて下さい。だこの

window.project = window.project || {}; project.vars = project.vars || {}; Then you will have a namespace declaration, so you can do project.vars.myVar = new Array(); 

のようなものですか?それは問題を見つけるのを助けるかもしれない –

+2

はこの擬似コードですか? bcこれが実際のコードであれば何もしませんが、それは完全に間違っています** – Neal

+0

どのように値にアクセスしていますか? –

答えて

1

を助け9

希望は私はあなたが達成しようとしていたかわからないが、私はいくつかの修正を行うことができましたし、この例では、グローバル変数にアクセスすることができました:http://jsfiddle.net/pKU6A/

var myvar=new Array(); //Array should be uppercase 

function initialize(){ 
    for (var i=1; i < 10; i++) //incorrect for loop syntax 
    { 
     callAnotherFunct(i); 
    } 

    alert(myvar); 
} 


function callAnotherFunct(i){ 
    myvar[i] = i; //local variable was not defined and index of array must be assigned 
} 

initialize(); //needed to call global function to kick it off 
0
window.myvar = []; // don't use new Array() 

function initialize(){ 
    for i=1 to 10 
    { 
     callAnotherFunct(i); 
    } 

    //window.myvar or myvar here should work 
} 
1

ているように見える - 擬似コードで。

私はあなたのコード解除pseudified持っており、それが正常に動作します:)

var myvar=new Array(); 

function initialize(){ 
    for (i=1; i < 10; i++) 
    { 
    callAnotherFunct(i); 
    } 
    alert(myvar); 
    //access myvar() here; 
} 

function callAnotherFunct(i){ 
    myvar.push(i); 
} 

あなたは(初期化を呼び出すとき - それは1,2,3,4,5,6,7,8と警告が表示されます、

2

pseudo-schmeudo。

var myvar = []; 

function initialize(){ 
    for (var i=0; i < 10; i++) 
    { 
     callAnotherFunct(i); 
    } 

    alert(myvar[0]); 
    alert(myvar[9]); 
} 


function callAnotherFunct(i){ 
    myvar[i]=i + 'pseudo-schmeudo'; 
} 

initialize(); 

Fiddle-schmiddle

0

これは名前空間の問題だと思います。私は

関連する問題