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中的值传递的。当引用对象时,该值是一个对象引用,但它仍然是通过值传递的。