如何在函数中创建非本地化变量,以便javascript中的其他函数可以访问该变量?

如何在函数中创建非本地化变量,以便javascript中的其他函数可以访问该变量?,javascript,function,variables,Javascript,Function,Variables,我在函数中有一个变量,我希望其他函数可以访问该变量。如何操作?您必须指定属性(变量)添加到的对象(变量始终是某些对象的属性) 如果希望此新变量对所有对象都可访问,则将其添加到窗口对象中,如下所示: window.variablename = 'some value'; function funcA() { if(typeof funcA.variable == 'undefined') { funcA.variable = 0; } else {

我在
函数中有一个变量
,我希望其他函数可以访问该变量。如何操作?

您必须指定属性(变量)添加到的对象(变量始终是某些对象的属性)

如果希望此新变量对所有对象都可访问,则将其添加到窗口对象中,如下所示:

window.variablename = 'some value';
function funcA() {
    if(typeof funcA.variable == 'undefined') {
        funcA.variable = 0;
    }
    else {
        funcA.variable++;
    }
}

function funcB() {
  alert(funcA.variable);
}

funcA();
funcB(); //alerts 0
funcA();
funcA();
funcA();
funcB(); //alerts 3
或者像这样:

window.variablename = 'some value';
function funcA() {
    if(typeof funcA.variable == 'undefined') {
        funcA.variable = 0;
    }
    else {
        funcA.variable++;
    }
}

function funcB() {
  alert(funcA.variable);
}

funcA();
funcB(); //alerts 0
funcA();
funcA();
funcA();
funcB(); //alerts 3

请避免使用全局变量。如果通过jquery进行异步调用,则使用全局变量可能会导致不明确的行为

你没有。通过传递参数并避免使用globals.delnan,可以正确地执行此操作。这意味着可以访问与局部变量(在函数内部声明的变量)同名的全局变量(添加到窗口对象中的变量),而不是局部变量。建议你避免这样,不仅仅是那样。“全局变量是邪恶的”这一说法由来已久,已经给出了大量的理由,其中许多是合理的。你可以问谷歌,搜索引擎,或者任何一个像样的程序员(“像样的”也意味着“知道他为什么遵循教条x”),等等。啊。。我懂了。所以,当您第一次声明变量时,您会这样做吗?如果您确实需要全局状态,那么请定义一个全局名称空间,而不是使窗口对象混乱。这与
window.a=1
或仅使用未声明的全局变量没有什么不同。