欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Javascript優(yōu)化技巧之短路表達(dá)式詳細(xì)介紹

 更新時(shí)間:2015年03月27日 16:47:53   投稿:junjie  
這篇文章主要介紹了Javascript優(yōu)化技巧之短路表達(dá)式詳細(xì)介紹,本文講解了什么是短路表達(dá)式,并給出了一些示例,需要的朋友可以參考下

什么是短路表達(dá)式?

短路表達(dá)式:作為"&&"和"||"操作符的操作數(shù)表達(dá)式,這些表達(dá)式在進(jìn)行求值時(shí),只要最終的結(jié)果已經(jīng)可以確定是真或假,求值過(guò)程便告終止,這稱(chēng)之為短路求值。這是這兩個(gè)操作符的一個(gè)重要屬性。

一個(gè)最簡(jiǎn)單的例子:

復(fù)制代碼 代碼如下:

foo = foo||bar;

這行代碼是什么意思?答案:

復(fù)制代碼 代碼如下:

//如果foo存在,值不變,否則把bar的值賦給foo
if(!foo)
    foo = bar;

在javascript的邏輯運(yùn)算中,0、""、null、false、undefined、NaN都會(huì)判定為false,而其他都為true。所以在上式的foo = foo||bar;中,||先計(jì)算第一個(gè)運(yùn)算數(shù),如果可以被轉(zhuǎn)換成true,也就是表示foo已經(jīng)存在有值,那么返回左邊這個(gè)表達(dá)式的值,否則計(jì)算第二個(gè)運(yùn)算數(shù)bar。

另外,即使||運(yùn)算符的運(yùn)算數(shù)不是布爾值,仍然可以將它看作布爾OR運(yùn)算,因?yàn)闊o(wú)論它返回的值是什么類(lèi)型,都可以被轉(zhuǎn)換為布爾值。

當(dāng)然,使用如下做法會(huì)更加嚴(yán)謹(jǐn):

復(fù)制代碼 代碼如下:

if(foo)      //不夠嚴(yán)謹(jǐn)
 
if(!!foo)    //更為嚴(yán)謹(jǐn),!!可將其他類(lèi)型的值轉(zhuǎn)換為boolean類(lèi)型

可以測(cè)試一下:

復(fù)制代碼 代碼如下:

var foo;
var number = 1;
var string = "string";
var obj = {};
var arr = [];
 
 
console.log(typeof(foo));  // undefined
console.log(typeof(number));  //number
console.log(typeof(string));  //string
console.log(typeof(obj));  //object  
console.log(typeof(arr));  //object
 
console.log(typeof(!!foo));  // boolean
console.log(typeof(!!number));  //boolean
console.log(typeof(!!string));  //boolean
console.log(typeof(!!obj));  //boolean
console.log(typeof(!!arr));  //boolean

利用這一點(diǎn)可以很好的符合,優(yōu)化javascript工程一文中提到的,使腳本少運(yùn)行或者不運(yùn)行,以達(dá)到優(yōu)化javascript的目的。但是需要注意的是,這樣寫(xiě)幫我們精簡(jiǎn)了代碼的同時(shí),也帶來(lái)了代碼可讀性的降低的缺點(diǎn)。所以比較好的做好是添加是適當(dāng)?shù)淖⑨尅?/p>

相關(guān)文章

最新評(píng)論