首頁  >  文章  >  web前端  >  Javascript優化技巧短路表達式詳細介紹_javascript技巧

Javascript優化技巧短路表達式詳細介紹_javascript技巧

WBOY
WBOY原創
2016-05-16 16:07:231099瀏覽

什麼是短路表達式?

短路表達式:作為"&&"和"||"操作符的操作數表達式,這些表達式在進行求值時,只要最終的結果已經可以確定是真或假,求值過程便告終止,這稱之為短路求值。這是這兩個操作符的一個重要屬性。

一個最簡單的例子:

複製程式碼 程式碼如下:

foo = foo||bar;

這行程式碼是什麼意思?答案:

複製程式碼 程式碼如下:

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

在javascript的邏輯運算中,0、""、null、false、undefined、NaN都會判定為false,而其他都為true。所以在上式的foo = foo||bar;中,||先計算第一個運算數,如果可以被轉換成true,也就是表示foo已經存在有值,那麼回傳左邊這個表達式的值,否則計算第二個運算數bar。

另外,即使||運算符的運算數不是布林值,仍然可以將它看作布林OR運算,因為無論它傳回的值是什麼型,都可以轉換為布林值。

當然,使用以下做法會更嚴謹:

複製程式碼 程式碼如下:

if(foo)      //不夠嚴謹
 
if(!!foo)    //更有嚴謹,!!可將其他型別的值轉換為boolean型別

可以測試一下:

複製程式碼 程式碼如下:

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

利用這一點可以很好的符合,優化javascript工程一文中提到的,使腳本少運行或不運行,以達到優化javascript的目的。但要注意的是,這樣寫幫我們精簡了程式碼的同時,也帶來了程式碼可讀性的降低的缺點。所以比較好的做好是添加是適當的註解。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn