f
является true
и r
является "0"
, но сравнение решает true
. После большой царапины головы, я ожидаю, что это потому, что r
является строкой, а не логической или целочисленной. Каков наилучший способ справиться с этим?JavaScript, сравнительный оператор с нулевой строкой
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
val() - это строка. Строка правдивая. – epascarello
Добро пожаловать в типы JavaScript! https://charlieharvey.org.uk/page/javascript_the_weird_parts –
@epascarello ну, точнее, ненулевая строка является правдой. – Shashank