Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有一种简单的方法可以在true和false之间切换javascript变量?_Javascript - Fatal编程技术网

有没有一种简单的方法可以在true和false之间切换javascript变量?

有没有一种简单的方法可以在true和false之间切换javascript变量?,javascript,Javascript,我有这个: modalTogglePreview: function ($scope) { if ($scope.modal.wmdPreview === true) { $scope.modal.wmdPreview = false; } else { $scope.modal.wmdPreview = true; } } 有没有什么方法可以实现同样的效果,但不使用if语句 $sc

我有这个:

    modalTogglePreview: function ($scope) {
        if ($scope.modal.wmdPreview === true) {
            $scope.modal.wmdPreview = false;
        } else {
            $scope.modal.wmdPreview = true;
        }
    }
有没有什么方法可以实现同样的效果,但不使用if语句

$scope.modal.wmdPreview = !$scope.modal.wmdPreview;
一元
运算符将其参数解释为布尔值,并返回布尔补码。请注意,这实际上与您的代码并不完全相同:您的代码只有在测试时变量完全为
true
时才有效。根据我的经验(不管怎样),依赖JavaScript中用作标志的变量作为真正的布尔值有点脆弱。(不过,也有相反的论点,所以这取决于你。)


为了进一步解释,请参见
运算符将值
未定义
0
NaN
false
,以及空字符串
解释为
false
。任何其他值都是
true

除了使用前面提到的Pointy运算符(这应该是首选方法)之外,如果您发现自己在
if…else
语句中设置了布尔值,那么您可能做错了什么。
条件已计算为布尔值。因此,您的
if…else
语句相当于

$scope.modal.wmdPreview = $scope.modal.wmdPreview !== true;

请看以下示例:

var result;

if (cond) {
    result = true;
}
else {
   result = false;
}
这意味着,如果条件(
cond
)为真,则将
result
设置为
true
。如果
cond
为false,则将结果设置为
false
。我们分配给
result
的值正好是
cond
的值。因此,上述内容相当于写作

var result = cond;
现在,有时我们使用的条件的计算结果不是布尔值。要将任何值转换为其等效布尔值,可以应用not运算符两次:

另一方面类似:

var result;

if (cond) {
   result = false;
}
else {
   result = true;
}
如果
cond
为true,则将
false
分配给
结果
。如果
cond
为false,则将
true
分配给
result
。这和你的情况一样。我们分配给
result
的值与
cond
的值相反。如Pointy所示,我们可以使用not运算符:

var result = !cond;
这适用于任何情况,但取决于表达式,它可能会使其更难阅读。例如,
!(x>5)
不如
x明显
var result = !cond;