2017-03-23 7 views
0
var products=[1,2,3]; 
product_edits();//GIVES [1,2,3]. 

myApp.onPageInit("mypage",function(page){ 
    console.log(products);//undefined 
    var products=[3,2,1]; 
    product_edits();//GIVES [1,2,3]?? Shouldn't this be 3,2,1? 
}); 

function product_edits(){ 
    $(element).click(function(){ 
     console.log(products); 
    }); 
} 

私は特定のpageInitが呼び出されました。しかし、私は値が3,2,1に変わったはずだと思ったときに、なぜ製品が1,2,3を与えるのか分かりません。グローバル変数JavascriptのQn

答えて

0

これは、onPageInitのローカルスコープで製品を再宣言するためです。 onPageInitのローカルスコープでそれを再宣言すると、その関数の外では使用できなくなります。

ローカルスコープで再宣言する代わりにproduct変数を再割り当てしてみてください。

また、グローバル変数を再割り当てしたくない場合は、関数の引数としてproducts配列を渡すことをお勧めします。

product_edits(products); 
+0

グローバルスコープの製品は検索できません。これは、ページがリロードされていることを意味しますか? – Lawrence

+0

私はpageInitの内部でproducts_editsを呼び出しましたが、product_editsは呼び出し元の関数から変数を受け取ってはいけませんか? – Lawrence

+0

グローバルスコープで宣言されたproducts変数をウィンドウオブジェクトから取得できます。だから、window.productsはあなたにグローバル変数を与えるべきです。 – rishipuri

関連する問題