แปลง String เป็น Boolean ได้หลายวิธี แต่ต้องระวัง: Non-empty string ทุกตัวเป็น true รวมถึง "false", "0", " "
ตัวอย่าง (วิธีเดิม)
<html>
<head>
<title>JavaScript Boolean</title>
</head>
<body>
<script>
var answer = true;
document.write(answer);
var result = (answer == 'true');
document.write("<br>" + result);
</script>
</body>
</html>
วิธีที่ถูกต้องต่างๆ
| วิธี | โค้ด | "true"→ | "false"→ | ""→ | "0"→ |
|---|---|---|---|---|---|
| Strict compare | str === "true" | true | false | false | false |
| JSON.parse | JSON.parse(str.toLowerCase()) | true | false | Error | Error |
| Boolean() | Boolean(str) | true | true | false | true |
| !! | !!str | true | true | false | true |
ฟังก์ชันแปลงที่แนะนำ
function stringToBool(str) {
if (typeof str !== 'string') return Boolean(str);
const lower = str.toLowerCase().trim();
if (lower === 'true' || lower === '1' || lower === 'yes' || lower === 'on') return true;
if (lower === 'false' || lower === '0' || lower === 'no' || lower === 'off') return false;
return Boolean(str); // fallback: non-empty = true
}
console.log(stringToBool("true")); // true
console.log(stringToBool("false")); // false
console.log(stringToBool("1")); // true
console.log(stringToBool("0")); // false
console.log(stringToBool("yes")); // true
console.log(stringToBool("")); // false
สรุป: อย่าใช้ Boolean("false") เพราะจะได้ true ต้องเปรียบเทียบ string โดยตรง