【问题标题】:Toggle boolean using function? [duplicate]使用函数切换布尔值? [复制]
【发布时间】:2016-10-07 14:59:19
【问题描述】:

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

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

为什么不返回true

【问题讨论】:

  • function toggle(x) 内部,您将局部变量x 设置为!x(并且该局部变量在方法结束后消失)。在大多数语言中,布尔值是简单类型,而不是对象或引用
  • 您意识到在代码中调用toggle(x) 的任何地方都会更短,只需编写!x - 它的作用就是否定布尔值

标签: javascript


【解决方案1】:

布尔数据类型按值传递。因此,对参数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);

但是,如comments中所说,还是使用比较好

test = !test;

【讨论】:

  • 所有 类型在 JavaScript 中按值传递。引用对象时,值是对象引用,但仍是按值传递。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-02
  • 2017-08-05
  • 1970-01-01
相关资源
最近更新 更多