在有人跳进来回答并抨击我问了一个愚蠢的问题之前;我知道 not 运算符的作用,至少在其他语言中它应该将结果从 true 反转为 false,反之亦然。我坚持的事情是我不时得到的奇怪行为。即我的代码中有这个。它没有做我期望它做的事情。
_checkOnOff: function(inst) {
return (!$.suggestBox.onOff || !$.suggestBox._get(inst, 'onOff')) ? false : true;
},
我在这里处理的“onOff”变量的实际值为 0 和 1。我假设“!” 操作员将反转它们。
但是,直到我将函数更改为像这样显式声明'== 0'之前,我无法让它工作......
_checkOnOff: function(inst) {
return ($.suggestBox.onOff == 0 || $.suggestBox._get(inst, 'onOff') == 0) ? false : true;
},
编辑:添加信息$.suggestBox.onOff 和 $.suggestBox._get(inst, 'onOff') 将是 0 或 1。
我的问题是,当 $.suggestBox.onOff 等于 0 时,为什么 !$.suggestBox.onOff 不产生 true ?是Javascript!等价于按位运算符?
编辑:第二次尝试
我尝试使用“!!” like 被建议(得到一个布尔值)并发现没有任何变化。这是代码和输出:
console.log('val: ' + $.suggestBox.onOff); // outputs: 0
console.log('! : ' + !$.suggestBox.onOff); // outputs: false
console.log('!! : ' + !!$.suggestBox.onOff); //outputs: true
console.log('!!! : ' + !!!$.suggestBox.onOff); //outputs: false
如果 $.suggestBox.onOff 是 1 或 0,输出不会改变!!!它仍然是虚假的,真实的,虚假的。到底是怎么回事?!
编辑:第三次尝试我发现它与我的变量有关。我不知道如何,但这与它的设置方式有关。好的,请做好准备,我将要告诉您的内容可能会让您大吃一惊,并改变您在键盘上键入的方式。真是不可思议:
//this.onOff = 0;
console.log('this.onOff: ' + this.onOff); //output: 0
console.log('! : ' + ! this.onOff); //output: false
console.log('!! : ' + !! this.onOff); //output: true
如果我取消注释掉“this.onOff = 0”,从而明确地将 this.onOff 分配给文字,它会将输出更改为:
- 0
- 真的
- 错误的
我才知道为什么。我会在答案部分写下来。小线索是变量 $.suggestBox.onOff 的设置方式。