Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从全局范围更改私有变量?可能吗?_Javascript_Scope - Fatal编程技术网

Javascript 如何从全局范围更改私有变量?可能吗?

Javascript 如何从全局范围更改私有变量?可能吗?,javascript,scope,Javascript,Scope,是否可以从全局范围更改下面函数的localVar局部变量 function test(){ var localVar = 'I am a local variable !'; console.log(localVar) } 更新 如果是oop,我可以做这样的事情,但我不需要这个 test.prototype.localVar = 'Changed ' ; 这有点违背了范围界定的目的: 如果您在测试之外创建了一个对象并将localVar附加到实例,那么您可以修改它,例如 fun

是否可以从全局范围更改下面函数的localVar局部变量

function test(){
    var localVar = 'I am a local variable !';
    console.log(localVar)
}
更新 如果是oop,我可以做这样的事情,但我不需要这个

test.prototype.localVar = 'Changed ' ;

这有点违背了范围界定的目的:

如果您在测试之外创建了一个对象并将localVar附加到实例,那么您可以修改它,例如

function test(){
    this.localVar = 'I am a local variable !';
}

var obj = new test();
obj.localVar = 'newval';

如果您不想要面向对象,为什么不直接传入一个函数参数呢

例如:

    function test(localVar){
       var localVar = localVar || 'I am a local variable !';
       console.log(localVar)
    }

这样,当没有提供参数时,它将返回:“我是一个局部变量!”。当您指定参数时,它将返回您在其中输入的内容。

那么您需要什么?你问的问题没有多大意义。为了避免你怀疑我,JavaScript语言的开发人员之一Douglas Crockford确认函数中声明的var是私有的。