JS字符串False转Boolean

本文深入探讨了JavaScript中特殊值如false字符串被解析为布尔值时的行为,揭示了其默认转化为true的原因,并提供了将false字符串明确转换为布尔false的方法。同时,全面介绍了不同类型在JavaScript中转换为布尔值的规则。

大家都知道在JS的世界里, 0、-0、null、""、false、undefined 或 NaN,这些都可以自动转化为布尔的 false,那么字符串的"false"是不是false呢,答案是否定的,if("false") 来判断的话,是等于true的。

1.

var hasAuth = 'true';
if(hasAuth){ //此时的hasAuth是true
  
}

2.
var hasAuth = 'false';
if(hasAuth){ //此时的hasAuth还是true
  
}

“false”的布尔值是true,那么怎么把false的字符串变成false的布尔值呢?

w3c解释如下:

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");

最后我以下的代码转换 "false"字符串

var value = "false";
var flag = value ==="false" ? false : true;

附其他类型转为布尔值:

/**
 * js转换成布尔值
 * a.转换方法:Boolean(var)
 * b.数字转换成布尔,除了0与NaN,其余都是true
 * c.字符串转换成布尔,除了空串"",其余都是true
 * d.null与undefined会转换成false
 * e.对象会转换成true
 */
// 数字
var foo = 1888;
console.log(`typeof foo: ${typeof foo}, Boolean(foo): ${Boolean(foo)}`); // typeof foo: number, Boolean(foo): true
// 0
var foo = 0;
console.log(`typeof foo: ${typeof foo}, Boolean(foo): ${Boolean(foo)}`); // typeof foo: number, Boolean(foo): false
// NaN
var foo = NaN;
console.log(`typeof foo: ${typeof foo}, Boolean(foo): ${Boolean(foo)}`); // typeof foo: number, Boolean(foo): false
// 字符串
var foo = 'hello';
console.log(`typeof foo: ${typeof foo}, Boolean(foo): ${Boolean(foo)}`); // typeof foo: string, Boolean(foo): true
// ''
var foo = '';
console.log(`typeof foo: ${typeof foo}, Boolean(foo): ${Boolean(foo)}`); // typeof foo: string, Boolean(foo): false
// null
var foo = null;
console.log(`typeof foo: ${typeof foo}, Boolean(foo): ${Boolean(foo)}`); // typeof foo: object, Boolean(foo): false
// undefined
var foo = undefined;
console.log(`typeof foo: ${typeof foo}, Boolean(foo): ${Boolean(foo)}`); // typeof foo: undefined, Boolean(foo): false
// 对象
// var foo = object;
// console.log(`typeof foo: ${typeof foo}, Boolean(foo): ${Boolean(foo)}`); // Uncaught ReferenceError: object is not defined
// Object()
var foo = Object();
console.log(`typeof foo: ${typeof foo}, Boolean(foo): ${Boolean(foo)}`); // typeof foo: object, Boolean(foo): true
// new Object()
var foo = new Object();
console.log(`typeof foo: ${typeof foo}, Boolean(foo): ${Boolean(foo)}`); // typeof foo: object, Boolean(foo): true
// 声明未赋值变量
var bar;
console.log(`typeof bar: ${typeof bar}, Boolean(bar): ${Boolean(bar)}`); // typeof bar: undefined, Boolean(bar): false
// 函数名f
function f() {
    //
}
console.log(`typeof f: ${typeof f}, Boolean(f): ${Boolean(f)}`); // typeof f: function, Boolean(f): true
// 函数f()
function f() {
    //
}
console.log(`typeof f(): ${typeof f()}, Boolean(f()): ${Boolean(f())}`); // typeof f(): undefined, Boolean(f()): false
// 函数f(a, b)
// function f(a, b) {
//     //
// }
// console.log(`typeof f(a, b): ${typeof f(a, b)}, Boolean(f(a, b)): ${Boolean(f(a, b))}`); // Uncaught ReferenceError: a is not defined
// 函数f(a = 0, b = '')
function f(a = 0, b = '') {
    //
}
console.log(`typeof f(a = 0, b = ''): ${typeof f(a = 0, b = '')}, Boolean(f(a = 0, b = '')): ${Boolean(f(a = 0, b = ''))}`); // typeof f(a = 0, b = ''): undefined, Boolean(f(a = 0, b = '')): false
// 带返回值函数fooBar(a = 10)
function fooBar(a = 10) {
    return a;
}
console.log(`typeof fooBar(a = 10): ${typeof fooBar(a = 10)}, Boolean(fooBar(a = 10)): ${Boolean(fooBar(a = 10))}`); // typeof fooBar(a = 10): number, Boolean(fooBar(a = 10)): true

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值