项目中遇到的JS中boolean判断问题
最近在项目中遇到一个关于js获取值进行true
和false
判断的问题:
示例代码如下:
<body>
<div id="radioTest" style="margin-left: 40%;margin-right: 40%;">
<input type="radio" name="flag" id="flag" value="true" onclick="trueClick()"/>真
<input type="radio" name="flag" id="flag" value="false" onclick="falseClick()"/>假
</div>
<script type="text/javascript">
function trueClick() {
const flag = $("#radioTest input[name='flag']:checked").val();
if (flag == true) {
console.log("true被选择");
}
console.log("真——被点击,其值为:" + flag + " 其类型为:" + typeof flag);
}
function falseClick() {
const flag = $("#radioTest input[name='flag']:checked").val();
if (flag == false) {
console.log("false被选中")
}
console.log("真——被点击,其值为:" + flag + " 其类型为:" + typeof flag);
}
</script>
</body>
如上述代码,为什么不能打印true被选择
和false被选择
这两条语句?
原因:
从<input type="radio" name="flag" id="flag" value="true" onclick="trueClick()"/>
中获取的值是String
类型,而不是Boolean
类型,flag
和true
进行比较的结果只能是false。
字符串类型转换为boolean类型
let str = '';
console.log("空字符串转换为boolean类型,值为: " + Boolean(str));
str = 'true';
console.log("'true'转换为boolean类型,值为: " + Boolean(str));
str = 'false';
console.log("'false'转换为boolean类型,值为:" + Boolean(str));
str = 'abcdefg';
console.log("其它普通字符串转换为boolean,值为:" + Boolean(str));
上述代码结果为: