到目前为止,我正在尝试:
var myBoolean = false; // global
function toggleBoolean(vr) {
vr = !vr;
}
alert(myBoolean); // false
toggleBoolean(myBoolean);
alert(myBoolean); // false
Run Code Online (Sandbox Code Playgroud)
但显然,它失败了.
编辑:抱歉,我忘了指出我希望该功能可以与许多布尔人合作,而不仅仅是一个
是的,您可以从函数切换全局布尔值.您无法在尝试中执行此操作,因为JavaScript严格按值调用.
function toggleBoolean() {
myBoolean = ! myBoolean;
}
Run Code Online (Sandbox Code Playgroud)
现在,如果你想按名称切换全局,你可以这样做(虽然它有点icky):
function toggleBoolean(name) {
window[ name ] = ! window[ name ];
}
Run Code Online (Sandbox Code Playgroud)
全局变量(在浏览器中的JavaScript中)是全局对象的属性,称为"窗口".在其他情况下,有一些方法可以将名称与全局上下文相关联.因此,您可以调用该函数,如下所示:
toggleBoolean( "myBoolean" );
Run Code Online (Sandbox Code Playgroud)
请注意,我在那里传递一个字符串,而不是对实际全局变量的引用.