基于全局变量Javascript的Qn

基于全局变量Javascript的Qn,javascript,java,android,variables,global-variables,Javascript,Java,Android,Variables,Global Variables,我肯定pageInit被调用了。但我不知道为什么当我认为值应该更改为3,2,1时,产品仍然给出1,2,3 这是因为您正在onPageInit的本地范围内重新声明产品。如果您在onPageInit的本地范围内重新声明它,那么它在函数外部将不可用 尝试重新分配产品变量,而不是在本地范围中重新声明 如果不想重新分配全局变量,最好将products数组作为函数参数传递 var products=[1,2,3]; product_edits();//GIVES [1,2,3]. myApp.onPage

我肯定pageInit被调用了。但我不知道为什么当我认为值应该更改为3,2,1时,产品仍然给出1,2,3

这是因为您正在onPageInit的本地范围内重新声明产品。如果您在onPageInit的本地范围内重新声明它,那么它在函数外部将不可用

尝试重新分配产品变量,而不是在本地范围中重新声明

如果不想重新分配全局变量,最好将products数组作为函数参数传递

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中的products_edits,product_edits不应该从调用函数获取变量吗?您可以从窗口对象检索全局范围中声明的products变量。所以window.products应该为您提供全局变量。如果您想了解变量作用域在javascript中是如何工作的,请看下面的答案:谢谢。窗口对象解决了我的问题。我重新声明只是因为我无法修改全局变量。
product_edits(products);