字符串”false”转换为布尔值false

问题

在项目中遇到字符串“false”写在if(‘false’)中仍为true问题

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var myBoolean=new Boolean();

//下面的所有的代码行均会创建初始值为 false 的 Boolean 对象。
var myBoolean=new Boolean();
var myBoolean=new Boolean(0);
var myBoolean=new Boolean(null);
var myBoolean=new Boolean("");
var myBoolean=new Boolean(false);//不带单引号的是false
var myBoolean=new Boolean(NaN);

//下面的所有的代码行均会创初始值为 true 的 Boolean 对象:
var myBoolean=new Boolean(1);
var myBoolean=new Boolean(true);
var myBoolean=new Boolean("true");
var myBoolean=new Boolean("false");//带单引号的字符串false最终等于true
var myBoolean=new Boolean("Bill Gates");

解决

JSON.parese()

1
2
JSON.parse('false')  // false
JSON.parse('true') //true

但此方法存在问题,当传人其他字符串时会报错,像这样JSON.parse('fales')


三元运算符

1
2
3
4
const bool: boolean = 'false' !== 'false';
// false
const bool: boolean = 'true' !== 'false';
// true

参考来源:如何快速、高效的将“false”转换为false