溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JavaScript中的條件表達式的應用

發布時間:2020-06-23 12:43:53 來源:億速云 閱讀:268 作者:元一 欄目:web開發

這篇文章運用簡單易懂的例子給大家介紹JavaScript中的條件表達式的應用,代碼非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

JavaScript一種直譯式腳本語言,是一種動態類型、弱類型、基于原型的語言,內置支持類型。它的解釋器被稱為JavaScript引擎,為瀏覽器的一部分,廣泛用于客戶端的腳本語言,最早是在HTML(標準通用標記語言下的一個應用)網頁上使用,用來給HTML網頁增加動態功能。 

分解條件表達式

我們可以將長的條件表達式分解成有命名的短小條件表達多,這樣有利于閱讀。例如我們可能會寫這樣的代碼:

let ieIEMac = navigator.userAgent.toLowerCase().includes("mac") && navigator.userAgent.toLowerCase().includes("ie")

上面的代碼太過冗長了,不利于閱讀,我們可以把它分解成幾個短小且有名字的條件表達式,如下所示:

let userAgent = navigator.userAgent.toLowerCase();
let isMac = userAgent.includes("mac");
let isIE = userAgent.toLowerCase().includes("ie");
let isMacIE = isMac && isIE;

合并條件表達式

與上面相反的,如果有多個簡短的條件表達式,則可以將它們合并成一個。例如我們可能會寫這樣的代碼:

const x = 5;
const bigEnough = x > 5;
const smallEnough = x < 6;
const inRange = bigEnough && smallEnough;

我們可以這樣合并:

const x = 5;
const inRange = x > 5 && x < 6;

因為表達式很短,即使把它們組合在一起也不會使表達式變長,所以我們可以這樣做。

合并重復的條件片段

如果我們在條件塊中有重復的表達式或語句,則可以將它們移出。例如我們可能會寫這樣的代碼:

if (price > 100) {
  //...
  complete();
} else {
  //...
  complete();
}

我們可以把重復的內容移到條件表達式外面,如下所示:

if (price > 100) {
  //...  
} else {
  //...  
}
complete();

這樣,我們不必重復不必要地調用complete函數。

刪除控制標志

如果我們在循環中使用了控制標志,那應該會這樣代碼:

let done = false;
while (!done) {
  if (condition) {
    done = true;
  }
  //...
}

在上面的代碼中,done 是控制標,在conditiontrue時,將done設置為true停止while循環。

相對于上面,我們可以使用break來停止循環,如下所示:

let done = false;
while (!done) {
  if (condition) {
    break;
  }
  //...
}

用多態替換條件

我們可以使用switch語句為不同種類的數據創建相同的子類,而不是使用switch語句對不同類型的數據執行相同的操作,然后針對對象的類型使用不同的方法。

例如我們可能會寫這樣的代碼:

class Animal {
  constructor(type) {
    this.type = type;
  }
  getBaseSpeed() {
    return 100;
  }
  getSpeed() {
    switch (this.type) {
      case ('cat'): {
        return getBaseSpeed() * 1.5
      }
      case ('dog'): {
        return getBaseSpeed() * 2
      }
      default: {
        return getBaseSpeed()
      }
    }
  }
}

我們可以這樣重構:

class Animal {
  constructor(type) {
    this.type = type;
  }
  getBaseSpeed() {
    return 100;
  }
}
class Cat extends Animal {
  getSpeed() {
    return super.getBaseSpeed() * 1.5;
  }
}
class Dog extends Animal {
  getSpeed() {
    return super.getBaseSpeed() * 2;
  }
}

switch語句很長時,應該為不同類型的對象定制case塊。

采用空對象

如果我們重復檢查nullundefined,則可以定義一個代表該類的nullundefined版本的子類,然后使用它。

例如我們可能會寫這樣的代碼:

class Person {
  //...
}

我們可以這樣重構:

class Person {
  //...
}
class NullPerson extends Person {
  //...
}

然后,我們將Person設置為nullundefined 的對象屬性,而不是將其設置為NullPerson實例。

這樣就無需使用條件檢查這些值。

用衛語句代替嵌套條件

衛語句就是把復雜的條件表達式拆分成多個條件表達式,比如一個很復雜的表達式,嵌套了好幾層的if-then-else語句,轉換為多個if語句,實現它的邏輯,這多條的if語句就是衛語句。

嵌套條件語句很難閱讀,所以我們可以使用衛語句代替它們。例如我們可能會寫這樣的代碼:

const fn = () => {
  if (foo) {
    if (bar) {
      if (baz) {
        //...
      }
    }
  }
}

我們可以這樣優化:

  if (!foo) {
    return;
  }
  if (!bar) {
    return;
  }
  if (baz) {
    //...
  }
}

在上面的代碼中,衛語句是:

if (!foo) {
  return;
}

if (!bar) {
  return;
}

如果這些條件為假,它們會提前返回函數,這樣,我們就不需要嵌套了。

關于JavaScript中的條件表達式的應用就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女