Javascript:反转布尔值不起作用

时间:2011-12-15 11:02:12

标签: javascript boolean invert

我试图反转一个布尔值(切换);

var current_state=$.cookie('state');
if(current_state==null) {
  current_state=false;
}
console.log(current_state);
current_state=(!current_state);
console.log(current_state);

$.cookie('state', current_state, { expires: 7, path: '/' });

在我看来,第二个console.log应显示与第一个false相反的内容,但两个调用都会报告{{1}}。什么东西在这里?

3 个答案:

答案 0 :(得分:4)

您的$.cookie('state')似乎是一个字符串(“false”)。

作为证据,请参阅以下代码(也在this jsfiddle中):

var current_state='false';
if(current_state==null) {
  current_state=false;
}
console.log(current_state);
var current_state=(!current_state);
console.log(current_state);

它输出false两次。

为什么呢?因为您检查它是否为空并且不支持其他情况。

您可以这样做:

var current_state='false';
if(current_state==null ||
    current_state==false ||
    current_state=='false') {
    current_state = false;
}else{
    current_state = true;
}
console.log(current_state);
current_state=(!current_state);
console.log(current_state);

并且您的代码将首先输出布尔truefalse,然后输出相反的布尔值。

答案 1 :(得分:3)

如果current_state不是null它确实是一个布尔值,你确定吗?也许这是一个字符串?

答案 2 :(得分:0)

问题是current_state不是布尔值而是字符串

var current_state=$.cookie('state');
if(current_state==null) {
    current_state=false;
}   

console.log(current_state);
var current_state= current_state == 'false' ? "true" : "false"; // (!current_state);
console.log(current_state);
$.cookie('state', current_state);