f
为true
,r
为"0"
,但比较结果为true
。经过多次努力之后,我认为这是因为r
是一个字符串,而不是布尔值或整数。处理这个问题的最佳方法是什么?
https://jsfiddle.net/nboeo0z2/
var r=$('input[name="myradio"]:checked').val();
var f = true;
console.log('r',r,'f',f,'test',(!f || r) ? true : false);
<input type="radio" value="1" name="myradio">Yes
<input type="radio" checked="checked" value="0" name="myradio">No
答案 0 :(得分:8)
任何非空字符串都是&#34; truthy&#34;。如果你知道该值看起来像一个数字,你可以强制转换:
var r = +$('input[name="myradio"]:checked').val();
一元+
运算符强制将字符串转换为数字,而数字0
不是&#34; truthy&#34;。
如果值不是数字,则数字转换将产生NaN
,而false
与0
一样。< / p>