JavaScript中的Boolean類型

          Posted on 2006-11-24 19:11 Jaunt 閱讀(1032) 評論(0)  編輯  收藏 所屬分類: JavaScript
          今天看到 Oo緣來是你oO 的博客,關(guān)于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對象是有區(qū)別的,不要相互混淆,引用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.???區(qū)別

          區(qū)別(1):???聲明形式

          區(qū)別(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 " );

          輸出結(jié)果:

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

          區(qū)別(3):初始化Boolean對象

          聲明一個Boolean對象,如果我們用一個值為false的Boolean對象對其進(jìn)行初始化,則新的Boolean對象的值為true

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

          Oo緣來是你oO 的博客中 馬嘉楠 ?遇到這個問題,查了一些資料才知道,學(xué)無止境啊。可是我的問題依然沒有解決。
          我的問題是關(guān)于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);

          結(jié)果:
          ob2? = ? true ?ob3? = ? false ?ob4? = ? true ?ob5? = ? true

          問題已經(jīng)解決:

          ||是這樣運(yùn)算的:從第一個開始,遇到有意義的返回,否則返回最后一個表達(dá)式(注意不一定是Boolean值);

          &&是這樣運(yùn)算的:從第一個開始,遇到無意義的返回,否則返回最后一個表達(dá)式(注意同上);

          !是這樣運(yùn)算的:
          對表達(dá)式的值取非(注意不是對表達(dá)式)。

          什么是無意義呢:如下六個 0,null,undefined,"",false,NaN。除此,視為有意義。

          new Boolean(),new Boolean(false)是同一個東西,由于它是一個對象,故是有意義的,但其值為false,所以,可以看為“有意義的false”,所以結(jié)果為最后一個表達(dá)式的值。
          主站蜘蛛池模板: 资兴市| 汾西县| 晋中市| 广汉市| 泰顺县| 田东县| 东阿县| 璧山县| 廉江市| 河源市| 阿坝县| 宁波市| 长治市| 错那县| 湛江市| 浪卡子县| 合山市| 高淳县| 永昌县| 淮滨县| 高密市| 通榆县| 万盛区| 大荔县| 吉木乃县| 荣昌县| 文山县| 夏津县| 永川市| 大新县| 怀化市| 永寿县| 广汉市| 中方县| 余姚市| 邢台市| 榆林市| 正阳县| 霸州市| 弥勒县| 通许县|