首頁 web前端 js教程 javascript中if和switch,==和===區別和聯繫實例詳解

javascript中if和switch,==和===區別和聯繫實例詳解

Jul 18, 2017 pm 02:46 PM
javascript js switch

這篇文章主要給大家介紹javascript中if和switch,==和===的區別和聯繫,十分的細緻實用

先看一段範例程式碼:


#
var a = '5';
switch (a) {
  case 5:
    console.log('==');
    break;
  case "5":
    console.log('===');
    break;
  default:
}
登入後複製

最後控制台顯示的是===,看來可以放心的用。

1.if和switch

if 是用得最多的,沒什麼太多好說。值得注意的一點是:if 其實和|| 很像,如果if (conditionA){} else {} 中的conditionA為true,然後它執行完else之前的程式碼區塊後就看都不會看else裡面的程式碼。和 || 前面為true的時候後面會被忽略一樣,即便裡面有再多的錯誤。基於這個性質,當然把可能用得最多的程式碼區塊放在前面,減少判斷次數。另一方面,如果有很多的 if 判斷,而且可能執行的次數分佈比較均勻,那麼後面的判斷語句每次都要把前面的判斷一個一個執行完,不利於優化。比較好的做法是將一層判斷語句變成兩層判斷語句,如


if (a > 0 && a <= 1) {
  //do something
} else if (a > 1 && a <= 2) {

} else if (a > 2 && a <= 3) {

} else if (a > 3 && a <= 4) {

} else if (a > 4 && a <= 5) {

} else if (a > 5 && a <= 6) {

}...
登入後複製

變成


if (a > 0 && a <= 4) {
  if (a <= 1) {
    //do something
  } else if (a > 1 && a <= 2) {

  } else if (a > 2 && a <= 3) {

  } else if (a > 3 && a <= 4) {

  }
} else if (a > 4 && a <= 8) {
  //
}..
登入後複製

  雖然前面的每個判斷都多加了一次,但是後面的判斷就都減少了(4-1)*n次,還是滿賺的。忽然覺得這種方式和嵌套循環有點像,循環次數少的放在外面有助於性能優化,如何分成兩層甚至多層就要看具體情況了。

  switch是 if 最親密的戰友,每次 if 忙不過來的時候就來搭把手。 switch和if 互轉估計沒什麼好說的,而且switch和if一樣,都是順序從上往下執行判斷的,有所不同的是if 中的else在switch裡面可不管用,它有自己的小弟:break 。如果沒有遇到break,switch會繼續往下執行,如


var a = 2;
switch (a) {
  case 1:
    console.log("1");
    //break miss
  case 2:
    console.log("2");
  case 3:
    console.log("3");
  default:
    console.log(&#39;no break&#39;);
}
登入後複製

  最後控制台顯示 2,3,no break 。其實蠻好理解,break是提示程式跳出內部執行體到下一個case 判斷,如果沒有了,相當於 if(condition){A}{B},沒有了else,A和B當然都要執行啦。還有兩個小tip,一是switch和case中可以寫任何表達式,如


switch (A + B) {
  case a * b:
    console.log("1");
    break;
  case a / b + c:
    break;
    //...
  default:
    console.log(&#39;no break&#39;);
}
登入後複製

  實際上的比較是(A+B)===( a*b)和(A+B)===(a/b+c)。二是switch有一種特殊的用法,如


switch (true) {
  case condition1:
    //do something
    break;
  case condition2:
    break;
    //...
  default:
    //..
    ;
}
登入後複製

此時switch中的每一個case都會依照順序判斷執行。至於switch(false)?並沒有什麼卵用。

2.==與===

最經典的案例


var a = "5",
  b = 5;
a == b     //true
a === b     //false
var a = "ABC",
  b = "AB" + "C";
a === b     //true
登入後複製

  下面的顯示true的原因其實和string類型不可變是分不開的。表面看起來b只是簡單的拼接一個字串,但其實它已經跟原來的b沒有關係。每一個字串都存在記憶體池中特定的地方,當b="AB"+"C"執行完的時候,字串AB和C就已經被銷毀,而b指向記憶體池中ABC的位置。由於在指向前在記憶體池中發現了字串ABC(因為a引用著它,所以存在),所以b就和a指向同一塊區域,全等判斷相等。如果在b之前沒有任何變數指向字串ABC,那麼記憶體池中沒有,就會在裡面劃一塊地方給ABC,並將b指向ABC。

以上是javascript中if和switch,==和===區別和聯繫實例詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1317
25
PHP教程
1268
29
C# 教程
1245
24
建議:優秀JS開源人臉偵測辨識項目 建議:優秀JS開源人臉偵測辨識項目 Apr 03, 2024 am 11:55 AM

人臉偵測辨識技術已經是一個比較成熟且應用廣泛的技術。而目前最廣泛的網路應用語言非JS莫屬,在Web前端實現人臉偵測辨識相比後端的人臉辨識有優勢也有弱勢。優點包括減少網路互動、即時識別,大大縮短了使用者等待時間,提高了使用者體驗;弱勢是:受到模型大小限制,其中準確率也有限。如何在web端使用js實現人臉偵測呢?為了實現Web端人臉識別,需要熟悉相關的程式語言和技術,如JavaScript、HTML、CSS、WebRTC等。同時也需要掌握相關的電腦視覺和人工智慧技術。值得注意的是,由於Web端的計

艾爾登法環switch能玩麼 艾爾登法環switch能玩麼 Mar 11, 2024 am 11:31 AM

艾爾登法環能在switch上游玩嗎?艾爾登法環作為一款極具魅力的動作RPG遊戲,不少朋友可能還不明白它能否在switch平台上進行暢快遊玩,答案是暫時無法實現。艾爾登法環switch能玩麼答:不能在switch遊玩。此款備受矚目的魂系列角色扮演動作遊戲已正式發布,玩家可前往PC、ps4/5以及XboxSerieseX|S/XboxOne購買並立即體驗。許多擁有switch的朋友們可能仍熱切期待在ns上暢享這款遊戲,但遺憾的說,該遊戲並無switch版本。據官網配置要求顯示,遊戲配置較高,而sw

簡易JavaScript教學:取得HTTP狀態碼的方法 簡易JavaScript教學:取得HTTP狀態碼的方法 Jan 05, 2024 pm 06:08 PM

JavaScript教學:如何取得HTTP狀態碼,需要具體程式碼範例前言:在Web開發中,經常會涉及到與伺服器進行資料互動的場景。在與伺服器進行通訊時,我們經常需要取得傳回的HTTP狀態碼來判斷操作是否成功,並根據不同的狀態碼來進行對應的處理。本篇文章將教你如何使用JavaScript來取得HTTP狀態碼,並提供一些實用的程式碼範例。使用XMLHttpRequest

js和vue的關係 js和vue的關係 Mar 11, 2024 pm 05:21 PM

js和vue的關係:1、JS作為Web開發基石;2、Vue.js作為前端框架的崛起;3、JS與Vue的互補關係;4、JS與Vue的實踐應用。

Switch2能相容於Switch卡帶嗎? Switch2能相容於Switch卡帶嗎? Jan 28, 2024 am 09:06 AM

Switch2是任天堂在2023年科隆遊戲展公佈的新機型,一些玩家擔心新出來的機型與之前版本的機型卡帶會不會存在兼容性問題,下面我們一起來看看吧。 switch2相容於switch卡帶嗎答:switch2不相容switch卡帶。 Switch2卡帶的介紹根據任天堂的生產鏈公司的消息稱,Switch2可能會使用64GB的卡帶。它由於性能更好,支撐更多的3A遊戲大作的原因,需要更大卡帶容量。因為很多的遊戲作品需要閹割和壓縮,才能塞進一張遊戲卡帶裡面。而且Switch的卡帶容易被複製遊戲內容,所以更換新卡帶

說明匹配表達式(PHP 8)及其與開關的不同。 說明匹配表達式(PHP 8)及其與開關的不同。 Apr 06, 2025 am 12:03 AM

在PHP8 中,match表達式是一種新的控制結構,用於根據表達式的值返回不同的結果。 1)它類似於switch語句,但返回值而非執行語句塊。 2)match表達式使用嚴格比較(===),提升了安全性。 3)它避免了switch語句中可能的break遺漏問題,增強了代碼的簡潔性和可讀性。

js刷新當前頁面的方法 js刷新當前頁面的方法 Jan 24, 2024 pm 03:58 PM

js刷新目前頁面的方法:1、location.reload();2、location.href;3、location.assign();4、window.location。詳細介紹:1、location.reload(),使用location.reload()方法可以重新載入目前頁面;2、location.href,可以透過設定location.href屬性來刷新目前頁面等等。

JS中__proto__與prototype的差別 JS中__proto__與prototype的差別 Feb 19, 2024 pm 01:38 PM

JS中__proto__和prototype是兩個與原型相關的屬性,它們在功能上稍有不同。本文將具體介紹並比較這兩者的區別,並提供相應的程式碼範例。首先,我們先來了解它們的意義和用途。 proto__proto__是物件的內建屬性,它用來指向該物件的原型。每個物件都有一個__proto__屬性,包括自訂物件、內建物件和函數物件。透過__proto__屬

See all articles