在Javascript中来回更改布尔值

Posted

技术标签:

【中文标题】在Javascript中来回更改布尔值【英文标题】:Change a boolean back and forth in Javascript 【发布时间】:2014-05-28 20:20:59 【问题描述】:

我想知道在 javascript 中是否有可能有一个 click 事件侦听器,每次我单击时,我的布尔值都会从 true 到 false 来回更改。意思是我点击一个它会变成假,我再次点击它会变成真的,依此类推,无限循环。我什至不知道这是否可能,但我试过了:

//This is my listener
circlePicker.click(function () 
    booleanChecker(circlePickerSelector);
    console.log(booleanChecker(circlePickerSelector));
);

//This function checks if the boolean is true or false
function booleanChecker(isThisTrue) 
    // circlePickerSelector = !circlePickerSelector;
    // return circlePickerSelector;
    if (isThisTrue == false) 
        isThisTrue = true;
        console.log("I turned into true");
     else if (isThisTrue == true) 
        isThisTrue = false;
        console.log("I turned into false");
    
    return isThisTrue;

我想知道这是否可能。我感觉我的语法有问题。任何建议都非常受欢迎。

【问题讨论】:

【参考方案1】:

您可以使用! 运算符来切换它

circlePicker.click(function () 
    circlePickerSelector = !circlePickerSelector;
    console.log(circlePickerSelector);
);

如果 circlePickerSelector 最初是 true,则 !circlePickerSelector 将其变为 false。然后,您可以将其分配给相同的变量,以便在下次单击时执行相反的操作。

【讨论】:

【参考方案2】:

围绕一个变量创建一个闭包,然后从该闭包内部返回一个函数,例如,

function bool(initial) 
    initial = !!initial;
    return 
         get current() 
             return initial;
         ,
         toggle: function () 
             return initial = !initial;
         
    ;

var b = bool(true);
b.current;  // true
b.toggle(); // false
b.current;  // false
b.toggle(); // true
b.current;  // true

【讨论】:

以上是关于在Javascript中来回更改布尔值的主要内容,如果未能解决你的问题,请参考以下文章

无法重置布尔值 - Javascript

JavaScript学习笔记

更改布尔值时无法在 SwiftUI 中更改按钮文本

如何在Angular 2中每次路由更改时观察路由更改和布尔变量的更改值?

在 EnumSet 和布尔值数组之间转换

布尔值不能更改