使用函数切换布尔值?

13 浏览
0 Comments

使用函数切换布尔值?

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

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

为什么这不返回true

0
0 Comments

布尔数据类型被传递的是值。所以,对参数x的任何修改都不会反映在实际变量test上。你需要从函数中返回更新后的值,并将其重新赋值给变量。

function toggle(x) {
    return !x;          // 返回取反值
}
var test = false;
test = toggle(test);    // 将更新后的值重新赋值给变量
alert(test);

但是,正如在评论中所说,更好的做法是使用

test = !test;

在JavaScript中,所有类型都是按值传递的。当涉及到对象时,值是一个对象引用,但仍然是按值传递的。

0