作者:Carffuca
许可协议:
js 代码
- var bFound = true;
- var bFlag = false;
如上面的两行代码,boolean类型是JavaScript中的一种原始类型,它只有两种值:true和false。
使用Boolean(value)方法可以强制转换任意值为boolean类型
js 代码
- alert(Boolean(''));
- alert(Boolean('hello'));
- alert(Boolean(100));
- alert(Boolean(0));
- alert(Boolean(NaN)); //output false
- alert(Boolean(null));
- alert(Boolean(undefined));
- alert(Boolean(new Object()));
可以看出,当被转换的值为空字符串、数字0和NaN、null或者undefined时,转换为false,其它情况转换为true。所以当我们写if判断的时候需要注意这些特殊的情况,尤其是使用目前比较流行的“对象探测法”书写JS时。
“对象探测法”主要写法如下:
js 代码
- var student = new Object();
- if (student.name) {
- alert(student.name);
- } else {
- student.name = 'Tom';
- alert(student.name);
- }
if (student.name)这句用来探测student对象中存不存在name属性,如果存在则弹出;否则把name赋值为'Tom',再弹出。这边需要注意的是如果name值已经存在,并且值为空字符串或者0时,结果可能与你预期的不同。
在JavaScript中除了存在boolean类型这样的原始类型之外,还存在一种引用类型 -- Boolean类型。创建Boolean类型的对象的代码如下:
js 代码
- var oBooleanObject = new Boolean(true);
需要注意的是这边的"new Boolean()"与前面的"Boolean()"的区别,前者是创建Boolean对象,后者为强制类型转换方法。不过,在大多数情况下Boolean类型是不常被用到的。并且在使用Boolean类型的时候还可能产生一些误会,看看下面的代码:
js 代码
- var oBooleanFalse = new Boolean(false);
- alert(oBooleanFalse && true);
这边输出是true,让人觉得奇怪。
当执行oBooleanFalse && true时,oBooleanFalse被强制类型转换了,而这边oBooleanFalse是一个Object,强制转换后为true。也就说这边用来计算的是oBooleanFalse对象本身,而不是它的值false。
虽然我们需要了解Boolean这种类型,但为了避免错误,最好还是使用boolean原始类型。
再看下面一个例子:
js 代码
- var ob1 = new Boolean(false);
- var ob2 = (ob1&&true);
- var ob3 = (true&&ob1);
- var ob4 = Boolean(ob1&&true);
- var ob5 = Boolean(true&&ob1);
- alert("ob2 = " + ob2 + ", ob3 = " + ob3 + ", ob4 = " + ob4 + ", ob5 = " + ob5);
-
这边最让人困惑的就是ob2和ob3由于顺序上的不同,最终的结果居然不同。产生这样的结果主要和JavaScript中的逻辑运算符的工作方式相关。具体工作方式如下:
1. && 的工作方式: 从第一个开始,遇到值为false的表达式(fasle、null、undefined、0、NaN、‘’)则返回此表达式,否则返回最后一个表达式(注意,这边所说的表达式不一定为boolean类型)
2. || 的工作方式: 从第一个开始,遇到值为true的表达式(与上面&&相反的其他情况)的返回此表达式,否则返回最后一个表达式
3. ! 的工作方式: 对表达式的值取非(注意不是对表达式)。
回到上面的例子,我们可以知道,对于var ob2 = (
ob1&&true);,首先看ob1表达式强制转换为boolean类型后的值,这边ob1为Boolean引用类型,从前文可知强制转换后值为true。逻辑运算
(ob1&&true)会继续看下一个值true。这时,逻辑运算&&发现这已经是最后一个值,所以返回了最后的这个表达式true。最终我们的ob2 = true。
对于var ob3 = (true&&ob1);,首先第一个表达式是true,接着看第二个表达式ob1,由于这已经是最后一个表达式了,所以返回ob1。最终ob3 = ob1 = new Boolean(false);即ob3是一个Boolean引用类型。
最后,在alert语句中,使用"ob3 = " + ob3时,默认会调用ob3的toString()方法,而Boolean类型的toString方法即是输出它自己的内部值。这边ob3的内部值为false。了解到这样的特性后,对于ob4和ob5的结果也就不难理解了。
上一篇:
Null与Undefined -- Practical JavaScript(一)
分享到:
相关推荐
布尔类型不是JavaScript中的引用类型,而是原始类型。然而,存在与之相关的包装对象——`Boolean`对象,这可能会导致一些混淆。当使用`new Boolean()`创建一个布尔对象时,实际上是创建了一个包含布尔值的Object,而...
Java编程语言中有两种基本的数据类型:原始类型(Primitive Types)和引用类型(Reference Types),它们在行为、存储和使用上存在显著的区别。 1. **原始类型(Primitive Types)**: - Java的原始类型包括布尔型...
在JavaScript中,`Boolean`类型是一种基本的数据类型,与Java中的`Boolean`封装类相似,它主要用于表示逻辑上的真或假。通常,我们使用`true`和`false`这两个关键字来表示`Boolean`类型的值。然而,JavaScript还允许...
总结来说,JavaScript的基本数据类型和引用类型在处理和存储上有显著区别,理解这两种类型对于编写高效且无错误的JavaScript代码至关重要。基本类型是不可变的,按值访问,而引用类型则是可变的,按引用访问,这决定...
在 Java 中,还有许多其他的知识点与原始类型和包装类相关。例如,Integer 类提供了许多有用的方法,可以对整数进行操作,例如将整数转换为字符串、比较两个整数的大小等。Byte 类、Short 类、Long 类、Float 类、...
JavaScript还提供了三个特殊的引用类型:Boolean、Number和String。它们是基本类型的包装器,允许我们将基本类型值当作对象来操作。但这种包装器创建的对象与直接使用new操作符创建的对象不同。基本包装器对象只存在...
二、JavaScript的数据类型 JavaScript提供了多种数据类型,包括基本和复合类型: 1. **基本数据类型**: - **数字(Numbers)**:整数和浮点数,如123,120.50。 - **字符串(Strings)**:文本字符序列,如"This...
前言布尔值Boolean类型可能是三种包装对象Number、String和Boolean中最简单的一种。Number和String对象拥有大量的实例属性和方法,
引用类型包括类(classes)、接口(interfaces)、数组以及委托(delegates),它们在内存中的存储方式与值类型截然不同。对于引用类型,变量存储的是一个指向对象内存地址的引用,而非对象本身。因此,当我们将一个...
JavaScript有七种原始数据类型(null、undefined、boolean、number、bigint、string、symbol)和一种复杂数据类型(object)。 2. **控制结构**:条件语句(如if...else)用于根据特定条件执行不同代码块,而循环...
在JavaScript中,数据类型分为基本类型和引用类型。基本类型包括字符串(String)、数字(Number)、布尔值(Boolean)、空值(Null)、未定义(Undefined)和Symbol(ES6新增)。例如,`016-javascript-数据类型....
TypeScript 扩展了 JavaScript 的原始类型(number、string、boolean、null 和 undefined),并引入了更丰富的类型,如文字类型(字符串、数组和对象)、any(表示任意类型)、unknown(表示未知类型)、void(表示...
- JavaScript有两类数据类型:原始类型(Primitives)和引用类型(Objects)。原始类型包括:Undefined、Null、Boolean、Number、BigInt、String和Symbol。 - JavaScript是动态类型语言,变量可以随时更改其数据...
1. 值类型与引用类型 在 JavaScript 中,数据类型分为两大类:基本数据类型(值类型)和引用数据类型(引用类型)。值类型包括 null、undefined、boolean、number、bigint、string 和 symbol,它们是按值访问的。这...
BooleanRT, 实现2个物体间的布尔运算 The extension provides the following functions: 1- Real-time or per-click Boolean execution. 2- Material, UV and texture preservation. 3- Saving to prefab. 4- ...
JavaScript的数据类型分为简单数据类型和复杂数据类型。简单数据类型包括undefined、null、boolean、number和string,它们是不可变的。undefined表示未定义或未知的值,null则表示有意识的空值。boolean表示逻辑值,...
- 数据类型:原始类型(Number, String, Boolean, Null, Undefined, Symbol, BigInt)和引用类型(Object) - 表达式与运算符:算术、比较、逻辑、赋值等 - 控制流:条件语句(if...else)、循环(for, while, do...
在探讨“引用类型与值类型的运算”这一主题时,我们需要深入了解JavaScript中两种基本的数据类型——值类型和引用类型,并理解它们之间如何进行运算。本文将根据提供的内容进行深入解析。 ### 引用类型与值类型的...
在JavaScript中,基本类型值的使用和处理非常重要,了解Undefined、Null和Boolean这三种基本类型值,能够帮助开发者更好地编写逻辑判断和数据验证的代码,为编写高质量的JavaScript程序打下坚实的基础。