- 3
- 0
- 约2.54千字
- 约 3页
- 2017-11-20 发布于北京
- 举报
js中的boolean原始类型和Boolean引用类型
js中的boolean原始类型和Boolean引用类型
js 代码
?
var?bFound?=?true;??
var?bFlag?=?false;??
如上面的两行代码,boolean类型是JavaScript中的一种原始类型,它只有两种值:true和false。使用Boolean(value)方法可以强制转换任意值为boolean类型
js 代码
?
alert(Boolean());?//outpt?false??
alert(Boolean(hello));?//output?true??
alert(Boolean(100));?//output?true??
alert(Boolean(0));?//output?false
alert(Boolean(NaN)); //output false
alert(Boolean(null));?//output?false??
alert(Boolean(undefined));?//output?false??
alert(Boolean(new?Object()));?//output?true???
可以看出,当被转换的值为空字符串、数字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);?//output?true??
这边输出是true,让人觉得奇怪。当执行oBooleanFalse??true时,oBooleanFalse被强制类型转换了,而这边oBooleanFalse是一个Object,强制转换后为true。也就说这边用来计算的是oBooleanFalse对象本身,而不是它的值false。虽然我们需要了解Boolean这种类型,但为了避免错误,最好还是使用boolean原始类型。再看下面一个例子:
js 代码
var?ob1?=?new?Boolean(false);??
var?ob2?=?(ob1true);??
var?ob3?=?(trueob1);??
var?ob4?=?Boolean(ob1true);??
var?ob5?=?Boolean(trueob1);??
alert(ob2?=??+?ob2?+?,?ob3?=??+?ob3?+?,?ob4?=??+?ob4?+?,?ob5?=??+?ob5);
//output?ob2?=?true,?ob3?=?false,?ob4?=?true,?ob5?=?true?
这边最让人困惑的就是ob2和ob3由于顺序上的不同,最终的结果居然不同。产生这样的结果主要和JavaScript中的逻辑运算符的工作方式相关。具体工作方式如下:1. 的工作方式:从第一个开始,遇到值为false的表达式(fasle、null、undefined、0、NaN、‘’)则返回此表达式,否则返回最后一个表达式(注意,这边所说的表达式不一定为boolean类型)2. || 的工作方式:从第一个开始,遇到值为true的表达式(与上面相反的其他情况)的返回此表达式,否则返回最后一个表达式3. ! 的工作方式:对表达式的值取非(注意不是对表达式)。回到
您可能关注的文档
- EDA可编程逻辑器件实验心得体会完整版.doc
- EDA软件使用经验与心得-CadenceAllegro软件篇.docx
- EDI证与ICP证有何区别.docx
- EPLAN中的符号元件部件与设备.docx
- Eqaaslu学日语记单词简单有规律.doc
- equals(Object)与的区别.doc
- ERP实施与维护实训指导书.doc
- EDA数字逻辑三人表决器.doc
- ERPMRPMRPⅡ的区别与联系.doc
- ERP创业之星局域网连入方法win7版.doc
- (2026春新版)部编版八年级语文下册《第一单元》PPT课件.pptx
- 2018电力监控系统网络安全监测装置技术规范.docx
- 2022电力监控系统安全防护方案审核要点.docx
- 2014电力电缆光伏系统EN 50618欧标.docx
- (2026春新版)人教版二年级数学下册《第三单元 万以内数的认识》教案.docx
- (2026春新版)人教版二年级数学下册《第四单元 万以内的加法和减法》教案.docx
- (2026春新版)人教版二年级数学下册《综合与实践 时间在哪里》教案.docx
- (2026春新版)苏教版二年级数学下册《综合与实践 时间有多长》教案 .pdf
- (2026春新版)部编版三年级语文下册第3单元(教案).docx
- (2026春新版)部编版三年级语文下册第8单元(教案).docx
原创力文档

文档评论(0)