Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > Java > JavaScript中的Boolean,你了解多少?
【标  题】:JavaScript中的Boolean,你了解多少?
【关键字】:JavaScript,Boolean
【来  源】:http://www.blogjava.net/majianan/archive/2006/10/30/78177.html

JavaScript中的Boolean,你了解多少?

Your Ad Here ?????????????????????????????? JavaScript中的Boolean,你了解多少?
???????????????????????????????????????????????????????马嘉楠??????2006-10-30


今天看了一下Flyingis写的《ECMAScript 基础》一文。在看到
Boolean类这一块内容的时候,随手写了几行代码,问题出现了^+^
注:此文讨论的是JavaScript1.5


还是先来看一段非常简单的代码

// code:1
var ?x? = ? false ;???
var ?y? = ? true
;

// code:2

var ?xObject? = ? new ?Boolean( false );
var ?yObject? = ? new ?Boolean( true
);

// code:3

var ?resX? = ? new ?Boolean(x);
var ?resY? = ? new
?Boolean(y);

// code:4

var ?resXObject? = ? new ?Boolean(xObject);
var ?resYObject? = ? new
?Boolean(yObject);

// code:5

alert( " resX?=? " ? + ?resX? + ? " ?and?resY?=? " ? + ?resY);
alert(
" resXObject?=? " ? + ?resXObject? + ? " ?and?resYObject?=? " ? + ?resYObject);

你明白code:1~4 之间的区别么?(你一定对code:1最为熟悉,这是我们最常用的)
你知道code:5 的输出结果么?(可以先想想,在运行代码看结果,如果不明白,可以继续看下去)


如果你已经开始头晕了,那就暂时不去想了,看我下面的解释。
如果你都知道了(哇,高手啊,呵呵^+^),那我还有个问题需要你的解答,在此先谢过了。


正文:
JavaScript中的Boolean类型

1.???我们所熟悉的

var x = false;
var y = true;

这是我们大家都熟悉的,此时我们使用的是原始的Boolean值(the primitive Boolean values )true和false

2.???我们很少用到的

var xObject = new Boolean(false);
var yObject = new Boolean(true);

此时我们声明了一个Boolean对象,Boolean对象是对Boolean值的一个封装。
Boolean对象:一个值为true或false的Boolean对象。

原始的Boolean值和Boolean对象是有区别的,不要相互混淆,引用Core JavaScript 1.5 Reference中的一句话:Do not confuse the primitive Boolean values true and false with the true and false values of the Boolean object.


3.???区别

区别(1):???声明形式

区别(2):???在条件语句(condition statement)中

var?x?=?false;
var?xObject?=?new?Boolean(false);

if(x)
????alert(
"x?=?true");
else
????alert(
"x?=?false");

if(xObject)
????alert(
"xObject?=?"?+?xObject?+?",?but?in?the?condition?statement,?the?xObject?value?is?evaluated?to?true");
else
????alert(
"xObject?=?false");


输出结果:

x?=?false
xObject?
=?false,??but?in?the?condition?statement,?the?xObject?value?is?evaluated?to?true


当一个值为false的Boolean对象放到条件语句当中的时候,Boolean对象的值会被当作true来计算,但是它本身的值并没有改变,依然是false。很有趣,我只知道现象,具体原因不清楚,不知道发明者出于什么地考虑。但是在JavaScript1.2或者更早的版本中却有所不同,在条件语句(condition statement)中,Boolean对象的计算返回的是其对应的原始Boolean的值。


区别(3):初始化Boolean对象

声明一个Boolean对象,如果我们用一个值为false的Boolean对象对其进行初始化,则新的Boolean对象的值为true

var?xObject?=?new?Boolean(false);
var?resXObject?=?new?Boolean(xObject);
alert(
"The?resXObject?value?is?"?+?resXObject);

原始的Boolean值和Boolean对象区别如此之大,所以切记二者区别,不要混淆使用。

对于code:5 的输出结果,你现在明白是什么原因了吧。



上面的东东我也是今天遇到了问题,查了一些资料才知道,学无止境啊。可是我的问题依然没有解决。
我的问题是关于Boolean对象的初始化。代码如下,

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?=?true?ob3?=?false?ob4?=?true?ob5?=?true

js.JPG


我对ob2 和 ob3的结果不太理解,为什么我只是更改了ob1和true的顺序,结果去完全不同了。并且可以发现,结果均等于操作符“&&”后面的值。

希望大家能告诉我!


问题已经解决:

||是这样运算的:从第一个开始,遇到有意义的返回,否则返回最后一个表达式(注意不一定是Boolean值);

&&是这样运算的:从第一个开始,遇到无意义的返回,否则返回最后一个表达式(注意同上);

!是这样运算的:
对表达式的值取非(注意不是对表达式)。

什么是无意义呢:如下六个 0,null,undefined,"",false,NaN。除此,视为有意义。

new Boolean(),new Boolean(false)是同一个东西,由于它是一个对象,故是有意义的,但其值为false,所以,可以看为“有意义的false”,(正如你所说的一样)。
所以结果为最后一个表达式的值。

继续学习^+^




hibernate.hbm2ddl.auto与import.sql:【上一篇】
Selenium做功能测试的一点讨论:【下一篇】
【相关文章】
  • Javascript 操作表单域的两个重要技巧 By shawl.qiu
  • [转贴]javaScript通用数据类型校验
  • Javascript 生成指定范围数值随机数 By shawl.qiu
  • 使用 javascript 函数 完美控制页面图片显示大小 By shawl.qiu
  • mozilla中javascript读取中文文件解决办法
  • 如何在 VS 2005 里调试 Javascript
  • javascript的函数
  • JavaScript事件综合查询
  • javascript小技巧
  • E-Mail的正则表达式(JavaScript)
  • 【随机文章】
  • Fireworks中毛笔字条幅的制作
  • 面向.NET开发人员的Ajax 技术平台策略
  • 脱PEX V0.99b bart^crackPL的壳
  • AJAX使用总结(Ajaxpro框架)
  • 全面了解网线的制作方法(图)
  • 用C#实现木马程序(分析)
  • IPVS 4 on FreeBSD安装
  • Word教学中的一点体会
  • 1000本ORACLE书
  • 为什么Marquee是不符合WEB标准的
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.