Javascript 使用函数切换布尔值?

Javascript 使用函数切换布尔值?,javascript,Javascript,我想创建一个函数来切换代码中的任何布尔值,但无法获得预期结果: function toggle(x){ x=!x; } var test=false; toggle(test); alert(test); 为什么不返回true?布尔数据类型是按值传递的。因此,对参数x所做的任何更改都不会反映实际变量test。您需要从函数返回更新后的值,并将其分配回变量 function toggle(x) { return !x; // Return negated value

我想创建一个函数来切换代码中的任何布尔值,但无法获得预期结果:

function toggle(x){
  x=!x;
}
var test=false;
toggle(test);
alert(test);

为什么不返回
true

布尔数据类型是按值传递的。因此,对参数
x
所做的任何更改都不会反映实际变量
test
。您需要从函数返回更新后的值,并将其分配回变量

function toggle(x) {
    return !x;          // Return negated value
}

var test = false;
test = toggle(test);    // Assign the updated value back to the variable
alert(test);
但是,如中所述,最好使用

test = !test;

函数切换(x)
的内部,您正在将局部变量
x
设置为
!x
(该局部变量在方法结束后消失)。Boolean在大多数语言中都是简单的类型,而不是对象或引用。您意识到,在代码中调用
toggle(x)
的任何地方都比只写
要短!x
-该函数用于对布尔值求反,所有类型都是通过JavaScript中的值传递的。当引用对象时,该值是一个对象引用,但它仍然是通过值传递的。