干熟妇在线视频午夜剧场一级A级|99成人香视频日本两性激情视频|久久 午夜福利无码精品人妻一区|热久久超碰精品精品少妇一区二区|五月天综合在线国产一区免费视频|亚洲成人中心热re久久99|亚洲国产怡红院丁香五月综合h|玖玖九久久久午夜射精视频

十二年專注于品牌網(wǎng)站建設(shè) 十余年專注于網(wǎng)站建設(shè)_小程序開發(fā)_APP開發(fā),低調(diào)、敢創(chuàng)新、有情懷!
南昌百恒網(wǎng)絡(luò)微信公眾號(hào) 掃一掃關(guān)注
小程序
tel-icon全國服務(wù)熱線:400-680-9298,0791-88117053
掃一掃關(guān)注百恒網(wǎng)絡(luò)微信公眾號(hào)
掃一掃打開百恒網(wǎng)絡(luò)微信小程序

百恒網(wǎng)絡(luò)

南昌百恒網(wǎng)絡(luò)

結(jié)合實(shí)例詳細(xì)介紹ECMAScript 布爾操作符屬性及應(yīng)用技巧

百恒網(wǎng)絡(luò) 2012-02-13 5091

ECMAScript 布爾操作符(邏輯非、邏輯與、邏輯或)

布爾操作符 在一門編程語言中,布爾操作符的重要性堪比相等操作符。如果沒有測(cè)試兩個(gè)值關(guān)系的能力,那么諸如if...else和循環(huán)之類的語句就不會(huì)有用武之地了。布爾操作符一共有3個(gè):非(NOT)、與 (AND)和或(OR)。

1.邏輯非

邏輯非操作符由一個(gè)嘆號(hào)(!)表示,可以應(yīng)用于ECMAScript中的任何值。無論這個(gè)值是什么數(shù)據(jù)類型,這個(gè)操作符都會(huì)返回一個(gè)布爾值。邏輯非操作符首先會(huì)將它的操作數(shù)轉(zhuǎn)換為一個(gè)布爾值,然后再對(duì)其求反。也就是說,邏輯非操作符遵循下列規(guī)則:

◎如果操作數(shù)是一個(gè)對(duì)象,返回false;

◎如果操作數(shù)是一個(gè)空字符串,返回七rue;

◎如果操作數(shù)是一個(gè)非空字符串,返回false;

◎如果操作數(shù)是數(shù)值0,返回true;

◎如果操作數(shù)是任意非0數(shù)值(包括Infinity),返回false;

◎如果操作數(shù)是null,返回true;

◎如果操作數(shù)是NaN,返回true;

◎如果操作數(shù)是undefined,返回true。

下面幾個(gè)例子展示了應(yīng)用上述規(guī)則的結(jié)果:

alert(! false); //true

alert(!"blue"); //false

alert(1 0); //true

alert(! NaN); //true

aler七(!""); //true

alert( !12345); //false

邏輯非操作符也可以用于將一個(gè)值轉(zhuǎn)換為與其對(duì)應(yīng)的布爾值。而同時(shí)使用兩個(gè)邏輯非操作符,實(shí)際上就會(huì)模擬Bolean()轉(zhuǎn)型函數(shù)的行為。其中,第一個(gè)邏輯非操作會(huì)基于無論什么操作數(shù)返回一個(gè)布爾值,而第二個(gè)邏輯非操作則對(duì)該布爾值求反,于是就得到了這個(gè)值真正對(duì)應(yīng)的布爾值。當(dāng)然,最終結(jié)果與對(duì)這個(gè)值使用Boolean()函數(shù)相同,如下面的例子所示:

alert(!!"blue"); //true

alert(!1 0); //false

alert(!!NaN); //false

alert(!!‘’“); //false

alert(!!12345); //true

2.邏輯與

邏輯與操作符由兩個(gè)和號(hào)(&&)表示,有兩個(gè)操作數(shù),如下面的例子所示:

var result=true&&false;

邏輯與的真值表如下:

第一個(gè)操作數(shù)第二個(gè)操作數(shù)結(jié)果

truetruetrue

truefalsefalse

falsetruefalse

falsefalsefalse

南昌網(wǎng)頁設(shè)計(jì)公司前端開發(fā)工程師小結(jié):邏輯與操作可以應(yīng)用于任何類型的操作數(shù),而不僅僅是布爾值。在有一個(gè)操作數(shù)不是布爾值的情況下,邏輯與操作就不一定返回布爾值;此時(shí),它遵循下列規(guī)則:

◎如果第一個(gè)操作數(shù)是對(duì)象,則返回第二個(gè)操作數(shù);

◎如果第二個(gè)操作數(shù)是對(duì)象,則只有在第一個(gè)操作數(shù)的求值結(jié)果為true的情況下才會(huì)返回該對(duì)象;

◎如果兩個(gè)操作數(shù)都是對(duì)象,則返回第二個(gè)操作數(shù);

◎如果有一個(gè)操作數(shù)是null,則返回null:

◎如果有一個(gè)操作數(shù)是NaN,則退回NaN:

◎如果有一個(gè)操作數(shù)是undefined,則返回undefined。

邏輯與操作屬于短路操作,即如果第一個(gè)操作數(shù)能夠決定結(jié)果,那么就不會(huì)再對(duì)第二個(gè)操作數(shù)求值。對(duì)于邏輯與操作而言,如果第一個(gè)操作數(shù)是false,則無論第二個(gè)操作數(shù)是什么值,結(jié)果都不再可能是true了。來看下面的例子:

var found=true;

var result=(found&&s。meUndefinedVariable); //這里會(huì)發(fā)生錯(cuò)誤

alert(result); //這一行不會(huì)執(zhí)行

在上面的代碼中,當(dāng)執(zhí)行邏輯與操作時(shí)會(huì)發(fā)生錯(cuò)誤,因?yàn)樽兞縮omeUndefinedVariable沒有聲明。由于變量found的值是true,所以邏輯與操作符會(huì)繼續(xù)對(duì)變量someUndefinedVariable求值。

someUndefinedVariable尚未定義,因此就會(huì)導(dǎo)致錯(cuò)誤。這說明不能在邏輯與操作中使用未定義的值。如果像下面這個(gè)例中一樣,將found的值設(shè)置為false,就不會(huì)發(fā)生錯(cuò)誤了:

var ound = true;

var result=(found&& someUndefinedVariable); //不會(huì)發(fā)錯(cuò)誤

alert (result); //會(huì)執(zhí)行("false")

在這個(gè)例子中,警告框會(huì)顯示出來。無論變量someUndefinedVariable有沒有定義,也永遠(yuǎn)不對(duì)它求值,因?yàn)榈谝粋€(gè)操作數(shù)的值是false。而這也就意味著邏輯與操作的結(jié)果必定是false,根本用不著再對(duì)&&右側(cè)的操作數(shù)求值了。在使用邏輯與操作符時(shí)要始終銘記它是一個(gè)短路操作符。

3.邏輯或

邏輯或操作符由兩個(gè)豎線符號(hào)(||)表示,有兩個(gè)操作數(shù),如下面的例子所示:

var result=true || false;

邏輯或的真值表如下:

第一個(gè)操作數(shù)第二個(gè)操作數(shù)結(jié)果

truetruetrue

truefalsetrue

falsetruetrue

falsefalsefalse

南昌做網(wǎng)站公司前端開發(fā)工程師對(duì)邏輯或進(jìn)行小結(jié):與邏輯與操作相似,如果有一個(gè)操作數(shù)不是布爾值,邏輯或也不一定返回布爾值;此時(shí),它遵循下列規(guī)則:

◎如果第一個(gè)操作數(shù)是對(duì)象,則返回第一個(gè)操作數(shù);

◎如果第一個(gè)操作數(shù)的求值結(jié)果為false,則返回第二個(gè)操作數(shù);

◎如果兩個(gè)操作數(shù)都是對(duì)象,則返回第一個(gè)操作數(shù);

◎如果兩個(gè)操作數(shù)都是null,則返回null;

◎如果兩個(gè)操作數(shù)都是NaN,則返回NaN;

◎如果兩個(gè)操作數(shù)都是unde fined,則返回undefined。

與邏輯與操作符相似,邏輯或操作符也是短路操作符。也就是說,如果第一個(gè)操作數(shù)的求值結(jié)果為true,就不會(huì)對(duì)第二個(gè)操作數(shù)求值了。下面看一個(gè)例子:

var found=true;

var result= (found || someUndefinedVariable}; //不會(huì)發(fā)生錯(cuò)誤

alert (result); //會(huì)執(zhí)行("true")

這個(gè)例子跟前面的例子一樣,變量someUnde finedVariable也沒有定義。但是,由于變量found的值是true.而變量someUndefinedVariable永遠(yuǎn)不會(huì)被求值,因此結(jié)果就會(huì)輸出"true"。如果像下面這個(gè)例子一樣,把found的值改為false.

var found = false;

var result=(found || someUndefinedVariable); //這里會(huì)發(fā)生錯(cuò)誤

alert (result); //這一行不會(huì)執(zhí)行

我們可以利用邏輯或的這一行為來避免為變量賦null或undefined值。例如:

var myObject=preferredObject || backupObject;

在這個(gè)例子中,變量myObj ect將被賦予等號(hào)后面兩個(gè)值中的一個(gè)。變量preferredObject中包含優(yōu)先賦給變量myObj ect的值,變量backupObj ect負(fù)責(zé)在preferredObject中不包含有效值的情況下提供后備值。如果preferredObjec七的值不是null,那么它的值將被賦給myObject;如果是null,則將backupObject的值賦給myObj ect。ECMAScript程序的賦值語句經(jīng)常會(huì)使用這種模式,南昌網(wǎng)站建設(shè)公司百恒網(wǎng)絡(luò)也將采用這種模式。

希望本文對(duì)廣大站長或從事企業(yè)網(wǎng)站建設(shè)公司的團(tuán)隊(duì)有所幫助,如對(duì)此不太理解的,可以與南昌網(wǎng)絡(luò)公司百恒網(wǎng)絡(luò)技術(shù)部聯(lián)系。我們很高興與廣大站長和從事企業(yè)網(wǎng)站建設(shè)公司技術(shù)人員分享我們的技術(shù)和經(jīng)驗(yàn)。


400-680-9298,0791-88117053
掃一掃關(guān)注百恒網(wǎng)絡(luò)微信公眾號(hào)
掃一掃打開百恒網(wǎng)絡(luò)小程序

歡迎您的光顧,我們將竭誠為您服務(wù)×

售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售后服務(wù) 售后服務(wù)
 
售后服務(wù) 售后服務(wù)
 
備案專線 備案專線
 
×