百科狗-知识改变命运!
--

Boolean - JavaScript Boolean 对象

是丫丫呀1年前 (2023-11-21)阅读数 12#技术干货
文章标签对象

Boolean

Boolean对象是一个布尔值的对象包装器。

描述

如果需要,作为第一个参数传递的值将转换为布尔值。如果省略该参数或参数值为0-0nullfalseNaNundefined,或空字符串(""),则该对象具有的初始值为false。所有其它值,包括任何对象,空数组([])或字符串"false",都会创建一个初始值为true的对象。

注意不要将基本类型中的布尔值truefalse与值为truefalseBoolean对象弄混了。

其值不是undefinednull的任何对象(包括其值为false的布尔对象)在传递给条件语句时都将计算为true。例如,以下if语句中的条件评估为true

const x = new Boolean(false);
if (x) {
  // 这里的代码会被执行
}

基本类型的布尔值不受此规则影响。例如下面的if语句的条件为假:

const x = false;
if (x) {
  // 这里的代码不会执行
}

不要用创建Boolean对象的方式将一个非布尔值转化成布尔值,直接将Boolean当做转换函数来使用即可,或者使用双重非(!!)运算符:

const x = Boolean(expression);     // use this...
const x = !!(expression);          // ...or this
const x = new Boolean(expression); // don't use this!

对于任何对象,即使是值为falseBoolean对象,当将其传给Boolean函数时,生成的Boolean对象的值都是true

const myFalse = new Boolean(false);   // initial value of false
const g = Boolean(myFalse);       // initial value of true
const myString = new String('Hello'); // string object
const s = Boolean(myString);      // initial value of true

最后,不要在应该使用基本类型布尔值的地方使用Boolean对象。

备注:当将非标准属性document.all用作此构造函数的参数时,结果是值为false的布尔对象。此属性是旧的、非标准的属性,不应使用。

当使用非严格相等(==)来比较一个对象和布尔原始值时,最重要的是需要弄明白最终比较的是什么。请看一下的示例:

if ([]) { console.log("[] is truthy")}         // logs "[] is truthy"
if ([] == false) { console.log("[] == false")} // logs "[] == false"

[]是真值而[]== false也同时成立的原因是:非严格比较[]== false会将[]的原始值和false进行比较。而获取[]的原始值时,JavaScript 引擎会首先调用[].toString()。其结果为"",也是最终和false一起比较的值。换句话说,[]== false等价于""== false,而""是假值——这也解释了为什么会得到这一结果。


构造函数

Boolean():创建一个新的Boolean对象。


实例方法

Boolean.prototype.toString()

根据对象的值返回字符串truefalse。覆盖了Object.prototype.toString()方法。

Boolean.prototype.valueOf()

Boolean - JavaScript Boolean 对象

返回Boolean对象的原始值。覆盖了Object.prototype.valueOf()方法。


示例

以初始值false创建Boolean对象

const bNoParam = new Boolean();
const bZero = new Boolean(0);
const bNull = new Boolean(null);
const bEmptyString = new Boolean('');
const bfalse = new Boolean(false);


以初始值true创建Boolean对象

const btrue = new Boolean(true);
const btrueString = new Boolean('true');
const bfalseString = new Boolean('false');
const bSuLin = new Boolean('Su Lin');
const bArrayProto = new Boolean([]);
const bObjProto = new Boolean({});

鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com

免责声明:我们致力于保护作者版权,注重分享,当前被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!邮箱:344225443@qq.com)

图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,本着为中国教育事业出一份力,发布内容不收取任何费用也不接任何广告!)