ECMAScript 的原始值包装类型——Boolean讲解

这是我参与8月更文挑战的第7天,活动详情查看:8月更文挑战前端

ECMAScript 提供了 3 中特殊的引用类型:BooleanNumberString,方便操做原始值。咱们先来看一个例子:web

let my = "Sam";
let you = my.substring(2)

console.log(you); // "m"
复制代码

这里建立了一个原始值字符串 my,紧接着调用substring()方法,并将结果保存至 you 中。但原始值并非对象,substring 方法是从哪来的? 其实是由于后台作了处理,从而实现了上述操做,具体来讲,当第二行访问 my 的时候,是以只读模式访问的,后台会执行如下三个步骤: 一、建立一个 String 类型的实例 二、调用实例上的特定方法 三、销毁实例 至关于执行了如下代码:markdown

let my = new String("Sam");
let you = my.substring(2);
my = null;
复制代码

对于 Boolean 和 Number 也同样,以上三步也会在后台执行,只不过使用的是 Boolean 和 Number 的包装类型。函数

Boolean

Boolean 是对应布尔值的引用类型。要建立一个Boolean对象,就使用Boolean构造函数并传入true 或 false,以下例所示:post

let booleanObject = new Boolean(true);
复制代码

Boolean 的实例会重写 valueOf() 方法,返回一个原始值 true 或 false。toString()方法被调用时也会被覆盖,返回字符串"true"或"false"。不过,Boolean 对象在 ECMAScript 中用得不多。不只如此,它们还容易引发误会,尤为是在布尔表达式中使用Boolean对象时,好比:网站

let falseObject = new Boolean(false);
let result = falseObject && true;
console.log(result); // true

let falseValue = false;
result = falseValue && true;
console.log(result); // false
复制代码

在这段代码中,咱们建立一个值为 false 的 Boolean对象。而后,在一个布尔表达式中经过 && 操做将这个对象与一个原始值true组合起来。在布尔算术中,false && true 等于 false。但是,这个表达式是对 falseObject 对象而不是对它表示的值(false)求值。前面刚刚说过,全部对象在布尔表达式中都会自动转换为 true,所以falseObject在这个表达式里实际上表示一个 true 值。那么 true && true 固然是 true。 除此以外,原始值和引用值(Boolean对象)还有几个区别。首先,typeof操做符对原始值返回"boolean",但对引用值返回"object"。一样,Boolean 对象是 Boolean类型的实例,在使用instaceof操做符时返回true,但对原始值则返回false,示例:ui

console.log(typeof falseObject);             // object
console.log(typeof falseValue);              // boolea
nconsole.log(falseObject instanceof Boolean); // true
console.log(falseValue instanceof Boolean);  // false
复制代码

理解原始布尔值和Boolean对象之间的区别很是重要,强烈建议永远不要使用后者。url

写在最后

写做不易,但愿能够得到你的一个「赞」。若是文章对你有用,能够选择「收藏」。 若有文章有错误或建议,欢迎评论指正,谢谢你。❤️spa

欢迎阅读其它文章

相关文章
相关标签/搜索