五月综合缴情婷婷六月,色94色欧美sute亚洲线路二,日韩制服国产精品一区,色噜噜一区二区三区,香港三级午夜理伦三级三

您現(xiàn)在的位置: 365建站網(wǎng) > 建站教程 > JavaScript 教程 > ECMAScript Boolean 運(yùn)算符

ECMAScript Boolean 運(yùn)算符

此節(jié)有 165 人學(xué)習(xí)過     參與評(píng)論

Boolean 運(yùn)算符非常重要,它使得程序語言得以正常運(yùn)行。

Boolean 運(yùn)算符有三種:NOT、AND 和 OR。

ToBoolean 操作

在學(xué)習(xí)各種邏輯運(yùn)算符之前,讓我們先了解一下 ECMAScript-262 v5 規(guī)范中描述的 ToBoolean 操作。

抽象操作 ToBoolean 將其參數(shù)按照下表中的規(guī)則轉(zhuǎn)換為邏輯值:

參數(shù)類型 結(jié)果
Undefined false
Null false
Boolean 結(jié)果等于輸入的參數(shù)(不轉(zhuǎn)換)
Number 如果參數(shù)為 +0, -0 或 NaN,則結(jié)果為 false;否則為 true。
String 如果參數(shù)為空字符串,則結(jié)果為 false;否則為 true。
Object true

邏輯 NOT 運(yùn)算符

在 ECMAScript 中,邏輯 NOT 運(yùn)算符與 C 和 Java 中的邏輯 NOT 運(yùn)算符相同,都由感嘆號(hào)(!)表示。

與邏輯 OR 和邏輯 AND 運(yùn)算符不同的是,邏輯 NOT 運(yùn)算符返回的一定是 Boolean 值。

邏輯 NOT 運(yùn)算符的行為如下:

  • 如果運(yùn)算數(shù)是對(duì)象,返回 false
  • 如果運(yùn)算數(shù)是數(shù)字 0,返回 true
  • 如果運(yùn)算數(shù)是 0 以外的任何數(shù)字,返回 false
  • 如果運(yùn)算數(shù)是 null,返回 true
  • 如果運(yùn)算數(shù)是 NaN,返回 true
  • 如果運(yùn)算數(shù)是 undefined,發(fā)生錯(cuò)誤

通常,該運(yùn)算符用于控制循環(huán):

var bFound = false;
var i = 0;

while (!bFound) {
  if (aValue[i] == vSearchValues) {
    bFound = true;
  } else {
    i++;
  }
}

在這個(gè)例子中,Boolean 變量(bFound)用于記錄檢索是否成功。找到問題中的數(shù)據(jù)項(xiàng)時(shí),bFound 將被設(shè)置為 true,!bFound 將等于 false,意味著運(yùn)行將跳出 while 循環(huán)。

判斷 ECMAScript 變量的 Boolean 值時(shí),也可以使用邏輯 NOT 運(yùn)算符。這樣做需要在一行代碼中使用兩個(gè) NOT 運(yùn)算符。無論運(yùn)算數(shù)是什么類型,第一個(gè) NOT 運(yùn)算符返回 Boolean 值。第二個(gè) NOT 將對(duì)該 Boolean 值求負(fù),從而給出變量真正的 Boolean 值。

var bFalse = false;
var sRed = "red";
var iZero = 0;
var iThreeFourFive = 345;
var oObject = new Object;

document.write("bFalse 的邏輯值是 " + (!!bFalse));
document.write("sRed 的邏輯值是 " + (!!sRed));
document.write("iZero 的邏輯值是 " + (!!iZero));
document.write("iThreeFourFive 的邏輯值是 " + (!!iThreeFourFive));
document.write("oObject 的邏輯值是 " + (!!oObject));

結(jié)果:

bFalse 的邏輯值是 false
sRed 的邏輯值是 true
iZero 的邏輯值是 false
iThreeFourFive 的邏輯值是 true
oObject 的邏輯值是 true 

邏輯 AND 運(yùn)算符

在 ECMAScript 中,邏輯 AND 運(yùn)算符用雙和號(hào)(&&)表示:

例如:

var bTrue = true;
var bFalse = false;
var bResult = bTrue && bFalse;

下面的真值表描述了邏輯 AND 運(yùn)算符的行為:

運(yùn)算數(shù) 1 運(yùn)算數(shù) 2 結(jié)果
true true true
true false false
false true false
false false false

邏輯 AND 運(yùn)算的運(yùn)算數(shù)可以是任何類型的,不止是 Boolean 值。

如果某個(gè)運(yùn)算數(shù)不是原始的 Boolean 型值,邏輯 AND 運(yùn)算并不一定返回 Boolean 值:

  • 如果一個(gè)運(yùn)算數(shù)是對(duì)象,另一個(gè)是 Boolean 值,返回該對(duì)象。
  • 如果兩個(gè)運(yùn)算數(shù)都是對(duì)象,返回第二個(gè)對(duì)象。
  • 如果某個(gè)運(yùn)算數(shù)是 null,返回 null。
  • 如果某個(gè)運(yùn)算數(shù)是 NaN,返回 NaN。
  • 如果某個(gè)運(yùn)算數(shù)是 undefined,發(fā)生錯(cuò)誤。

與 Java 中的邏輯 AND 運(yùn)算相似,ECMAScript 中的邏輯 AND 運(yùn)算也是簡(jiǎn)便運(yùn)算,即如果第一個(gè)運(yùn)算數(shù)決定了結(jié)果,就不再計(jì)算第二個(gè)運(yùn)算數(shù)。對(duì)于邏輯 AND 運(yùn)算來說,如果第一個(gè)運(yùn)算數(shù)是 false,那么無論第二個(gè)運(yùn)算數(shù)的值是什么,結(jié)果都不可能等于 true。

考慮下面的例子:

var bTrue = true;
var bResult = (bTrue && bUnknown);	//發(fā)生錯(cuò)誤
alert(bResult);			//這一行不會(huì)執(zhí)行

這段代碼在進(jìn)行邏輯 AND 運(yùn)算時(shí)將引發(fā)錯(cuò)誤,因?yàn)樽兞?bUnknown 是未定義的。變量 bTrue 的值為 true,因?yàn)檫壿?AND 運(yùn)算將繼續(xù)計(jì)算變量 bUnknown。這樣做就會(huì)引發(fā)錯(cuò)誤,因?yàn)?bUnknown 的值是 undefined,不能用于邏輯 AND 運(yùn)算。

如果修改這個(gè)例子,把第一個(gè)數(shù)設(shè)為 false,那么就不會(huì)發(fā)生錯(cuò)誤:

var bFalse = false;
var bResult = (bFalse && bUnknown);
alert(bResult);			//輸出 "false"

在這段代碼中,腳本將輸出邏輯 AND 運(yùn)算返回的值,即字符串 "false"。即使變量 bUnknown 的值為 undefined,它也不會(huì)被計(jì)算,因?yàn)榈谝粋€(gè)運(yùn)算數(shù)的值是 false。

提示:在使用邏輯 AND 運(yùn)算符時(shí),必須記住它的這種簡(jiǎn)便計(jì)算特性。

邏輯 OR 運(yùn)算符

ECMAScript 中的邏輯 OR 運(yùn)算符與 Java 中的相同,都由雙豎線(||)表示:

var bTrue = true;
var bFalse = false;
var bResult = bTrue || bFalse;

下面的真值表描述了邏輯 OR 運(yùn)算符的行為:

運(yùn)算數(shù) 1 運(yùn)算數(shù) 2 結(jié)果
true true true
true false true
false true true
false false false

與邏輯 AND 運(yùn)算符相似,如果某個(gè)運(yùn)算數(shù)不是 Boolean 值,邏輯 OR 運(yùn)算并不一定返回 Boolean 值:

  • 如果一個(gè)運(yùn)算數(shù)是對(duì)象,并且該對(duì)象左邊的運(yùn)算數(shù)值均為 false,則返回該對(duì)象。
  • 如果兩個(gè)運(yùn)算數(shù)都是對(duì)象,返回第一個(gè)對(duì)象。
  • 如果最后一個(gè)運(yùn)算數(shù)是 null,并且其他運(yùn)算數(shù)值均為 false,則返回 null。
  • 如果最后一個(gè)運(yùn)算數(shù)是 NaN,并且其他運(yùn)算數(shù)值均為 false,則返回 NaN。
  • 如果某個(gè)運(yùn)算數(shù)是 undefined,發(fā)生錯(cuò)誤。

與邏輯 AND 運(yùn)算符一樣,邏輯 OR 運(yùn)算也是簡(jiǎn)便運(yùn)算。對(duì)于邏輯 OR 運(yùn)算符來說,如果第一個(gè)運(yùn)算數(shù)值為 true,就不再計(jì)算第二個(gè)運(yùn)算數(shù)。

例如:

var bTrue = true;
var bResult = (bTrue || bUnknown);
alert(bResult);			//輸出 "true"

與前面的例子相同,變量 bUnknown 是未定義的。不過,由于變量 bTrue 的值為 true,bUnknown 不會(huì)被計(jì)算,因此輸出的是 "true"。

如果把 bTrue 改為 false,將發(fā)生錯(cuò)誤:

var bFalse = false;
var bResult = (bFalse || bUnknown);	//發(fā)生錯(cuò)誤
alert(bResult);			//不會(huì)執(zhí)行這一行

如對(duì)本文有疑問,請(qǐng)?zhí)峤坏浇涣髡搲瑥V大熱心網(wǎng)友會(huì)為你解答??! 點(diǎn)擊進(jìn)入論壇

發(fā)表評(píng)論 (165人查看0條評(píng)論)
請(qǐng)自覺遵守互聯(lián)網(wǎng)相關(guān)的政策法規(guī),嚴(yán)禁發(fā)布色情、暴力、反動(dòng)的言論。
昵稱:
最新評(píng)論
------分隔線----------------------------
JavaScript 教程目錄

其它欄目

· 建站教程
· 365學(xué)習(xí)

業(yè)務(wù)咨詢

· 技術(shù)支持
· 服務(wù)時(shí)間:9:00-18:00
365建站網(wǎng)二維碼

Powered by 365建站網(wǎng) RSS地圖 HTML地圖

copyright © 2013-2024 版權(quán)所有 鄂ICP備17013400號(hào)