Posted on 2006-11-24 19:11
Jaunt 閱讀(1029)
評論(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”,所以結果為最后一個表達式的值。