我需要根据某些广播组的值禁用/启用某个按钮。这些收音机由一些常规代码填充,因为我使用grails,这是Groovy的框架,这是java的超集。那么解释就是说无线电的价值被定义为布尔值,这很自然,因为它们对应于是/否的答案。Javascript布尔值:false && true true results in true
现在,要禁用/启用此按钮,我使用了一些javascript,但它带有布尔值的香蕉。正如标题状态,在某些时候,我做了逻辑和保存false
一个变量,并保存true
这里的另一个变量之间是有问题的代码peice的:
var actual = true;
$('.requerido input:radio:checked').each(function() {
console.log("actual: " + actual);
console.log("value: " + this.value);
console.log("actual and value: " + (actual && this.value));
actual = actual && this.value;
console.log("actual: " + actual);
});
正如你可以看到我用在执行console.log进行调试,这也是在某些时候是什么抛出:
actual: true
value: true
actual and value: true
actual: true
actual: true
value: false
actual and value: false
actual: false
actual: false
value: true
actual and value: true
actual: true
因此,真正& &假==假的,但假& & true == true?请注意,这些值没有引号,因此它们是布尔值(我正在使用Chrome控制台进行调试,它代表双引号内的字符串,因此您可以区分true和“true”)。
任何想法?
另外,像var x = true && false
这样的手动比较总是按预期工作,对于存在问题的变量是非常有用的。
因为这显然是很奇怪的,我想减少这种例子在最小测试用例将是你有用。 – zmccord 2012-04-23 05:16:48
http://twitter.com/#!/mattmight/statuses/191964430312030208在PHP和JavaScript中,“==”发音为“可能等于”。 – 2012-04-23 05:36:33