◆

JavaScript Boolean 布尔值详解与类型转换

2023-02-02 01:370

什么是布尔值

布尔值代表“真”和“假”两个状态。“真”用关键字 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
💬留言板0

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

PAGE LOAD / LIVEJavaScript Boolean 布尔值详解与类型转换加载中