◆
JavaScript Boolean 布尔值详解与类型转换
什么是布尔值
布尔值代表“真”和“假”两个状态。“真”用关键字 true 表示,“假”用关键字 false 表示。布尔值只有这两个值。 语法:new Boolean([value])
下列运算符会返回布尔值:
- 前置逻辑运算符:
! (Not) - 相等运算符:
===,!==,==,!= - 比较运算符:
>,>=,<,<=
注意点
- 如果第一个参数不是布尔值,则会将其转换为布尔值。
- 如果省略该参数,或者其值为
0、-0、null、false、NaN、undefined、或者空字符串(""),则生成的Boolean对象的值为false。 - 任何其他的值,包括值为
"false"的字符串和任何对象,都会创建一个值为true的Boolean对象。 - 注意不要将基本类型中的布尔值
true和false与值为true和false的Boolean对象弄混了。 - 任何不是
undefined和null的对象,包括值为false的Boolean对象,直接用于条件语句时都会被当做true来对待
Boolean 对象
Boolean 对象是 JavaScript 的三个包装对象之一。作为构造函数,它主要用于生成布尔值的包装对象实例。
var x = new Boolean(null);
if (x) {
// 这里的代码会被执行
console.log('可以执行');
}
// ===
var x = new Boolean(null);
if (x.valueOf()) {
// 这里的代码不会被执行
console.log('不可以执行');
}
// ===
var x = null;
if (x) {
// 这里的代码不会被执行
console.log('不可以执行'); // 不会输出
}
// ===
var x = false;
if (x) {
// 这里的代码不会执行
}
tip
对于任何对象,即使是值为 false 的 Boolean 对象,当将其传给 Boolean 函数时,生成的 Boolean 对象的值都是 true。
// false
var myFalse = new Boolean(false);
// true
var g = new Boolean(myFalse);
var myString = new String('Hello');
// true
var s = new Boolean(myString);
创建值为 false 的 Boolean 对象
var bNoParam = new Boolean();
var bZero = new Boolean(0);
var bNull = new Boolean(null);
var bEmptyString = new Boolean('');
var bfalse = new Boolean(false);
创建值为 true 的 Boolean 对象
var btrue = new Boolean(true);
var btrueString = new Boolean('true');
var bfalseString = new Boolean('false');
var bSuLin = new Boolean('Su Lin');
var bArrayProto = new Boolean([]);
var bObjProto = new Boolean({});
Boolean 函数的类型转换作用
Boolean 对象除了可以作为构造函数,还可以单独使用,将任意值转为布尔值。
Boolean(undefined); // false
Boolean(null); // false
Boolean(0); // false
Boolean(''); // false
Boolean(NaN); // false
Boolean(1); // true
Boolean('false'); // true
Boolean([]); // true
Boolean({}); // true
Boolean(function () {}); // true
Boolean(/foo/); // true
使用双重的否运算符(!)也可以将任意值转为对应的布尔值。
!!undefined; // false
!!null; // false
!!0; // false
!!''; // false
!!NaN; // false
!!1; // true
!!'false'; // true
!![]; // true
!!{}; // true
!!function () {}; // true
!!/foo/; // true
不加 new 的话转为原始类型的布尔值。
if (Boolean(false)) {
console.log('true');
} // 无输出
if (new Boolean(false)) {
console.log('true');
} // true
if (Boolean(null)) {
console.log('true');
} // 无输出
if (new Boolean(null)) {
console.log('true');
} // true

还没有留言,来发表第一条吧~