我需要根據某些廣播組的值禁用/啓用某個按鈕。這些收音機由一些常規代碼填充,因爲我使用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