Posted on 2006-11-24 19:11
Jaunt 阅读(1023)
评论(0) 编辑 收藏 所属分类:
JavaScript
今天看到
Oo缘来是你oO
的博客,关于Boolean 类型一些问题如下:
正文:
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
区别(3):初始化Boolean对象
声明一个Boolean对象,如果我们用一个值为false的Boolean对象对其进行初始化,则新的Boolean对象的值为true
var
xObject
=
new
Boolean(
false
);
var
resXObject
=
new
Boolean(xObject);
alert(
"
The resXObject value is
"
+
resXObject);
Oo缘来是你oO
的博客中
马嘉楠
遇到这个问题,查了一些资料才知道,学无止境啊。可是我的问题依然没有解决。
我的问题是关于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
问题已经解决:
||是这样运算的:从第一个开始,遇到有意义的返回,否则返回最后一个表达式(注意不一定是Boolean值);
&&是这样运算的:从第一个开始,遇到无意义的返回,否则返回最后一个表达式(注意同上);
!是这样运算的:
对表达式的值取非(注意不是对表达式)。
什么是无意义呢:如下六个 0,null,undefined,"",false,NaN。除此,视为有意义。
new Boolean(),new Boolean(false)是同一个东西,由于它是一个对象,故是有意义的,但其值为false,所以,可以看为“有意义的false”,所以结果为最后一个表达式的值。