更改布尔来回javascript

时间:2014-04-14 18:26:38

标签: javascript javascript-events boolean

我想知道在Javascript中是否有可能有一个点击事件监听器,每次我点击时都会将我的布尔值从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;
}

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

谢谢!

2 个答案:

答案 0 :(得分:6)

您可以使用!运算符

进行切换
circlePicker.click(function () {
    circlePickerSelector = !circlePickerSelector;
    console.log(circlePickerSelector);
});

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

答案 1 :(得分:3)

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

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