最近中文字幕大全|熟女少妇精品一区二区|国产网红主播精品一区|日本一区二区精品理论电影|欧洲少妇无码精品视频在线|久久国产精品永久免费网站|人妻无码久久一区二区免费麻豆|国产日韩欧美一区二区在线高清

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

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

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

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

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

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

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

1.邏輯非

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

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

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

alert(!1 0); //false

alert(!!NaN); //false

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

alert(!!12345); //true

2.邏輯與

邏輯與操作符由兩個(gè)和號(&&)表示,有兩個(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ù)是對象,則返回第二個(gè)操作數(shù);

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

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

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

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

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

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

var found=true;

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

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

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

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

var ound = true;

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

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

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

3.邏輯或

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

var result=true || false;

邏輯或的真值表如下:

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

truetruetrue

truefalsetrue

falsetruetrue

falsefalsefalse

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

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

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

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

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

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

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

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

var found=true;

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

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

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

var found = false;

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

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

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

var myObject=preferredObject || backupObject;

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

希望本文對廣大站長或從事企業(yè)網(wǎng)站建設(shè)公司的團(tuán)隊(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ò)微信公眾號
掃一掃打開百恒網(wǎng)絡(luò)小程序

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

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