字符串为零的JavaScript比较运算符

JavaScript comparative operator with string zero

本文关键字:比较 运算符 JavaScript 字符串      更新时间:2023-09-26

ftruer"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

任何非空字符串都是"truthy"。如果你知道这个值应该看起来像一个数字,你可以强制转换:

var r = +$('input[name="myradio"]:checked').val();

一元+运算符强制将字符串转换为数字,并且数字0不是"truthy"。

如果值是而不是数字,则数字转换将产生NaN,并且它与0一样是false