布尔数据类型被传递的是值。所以,对参数x的任何修改都不会反映在实际变量test上。你需要从函数中返回更新后的值,并将其重新赋值给变量。
function toggle(x) {
return !x; // 返回取反值
}
var test = false;
test = toggle(test); // 将更新后的值重新赋值给变量
alert(test);
但是,正如在评论中所说,更好的做法是使用
test = !test;
在JavaScript中,所有类型都是按值传递的。当涉及到对象时,值是一个对象引用,但仍然是按值传递的。