JavaScript學習筆記(五)——條件判斷與迴圈

来源:http://www.cnblogs.com/whucs2012/archive/2017/11/21/7873709.html
-Advertisement-
Play Games

在學習廖雪峰前輩的JavaScript教程中,遇到了一些需要註意的點,因此作為學習筆記列出來,提醒自己註意! 如果大家有需要,歡迎訪問前輩的博客https://www.liaoxuefeng.com/學習。 條件判斷 JavaScript使用if(){......}else{......}來進行條件 ...


在學習廖雪峰前輩的JavaScript教程中,遇到了一些需要註意的點,因此作為學習筆記列出來,提醒自己註意!

如果大家有需要,歡迎訪問前輩的博客https://www.liaoxuefeng.com/學習。


條件判斷

JavaScript使用if(){......}else{......}來進行條件判斷。

條件判斷需要註意一下幾點:

  • 不要漏掉每一個括弧{};
  • if...else...語句的執行特點是二選一,在多個if...else...語句中,如果某個條件成立,則後續就不再繼續判斷了。所以判斷條件設置不能出錯。
  • 在JavaScript把null、undefined、0、NaN和空字元串 ‘ ’ 視為false,其他的值一概視為true。

迴圈

JavaScript的迴圈有兩種。一種是for迴圈,另一種是while迴圈。

for迴圈

for迴圈最常用的地方是利用索引來遍曆數組:

var arr = ['Apple', 'Google', 'Microsoft'];
var i, x;
for (i=0; i<arr.length; i++) {
    x = arr[i];
    console.log(x);
}

for迴圈的3個條件都是可以省略的,如果沒有退出迴圈的判斷條件,就必須使用break語句退出迴圈,否則就是死迴圈:

var x = 0;
for (;;) { // 將無限迴圈下去
    if (x > 100) {
        break; // 通過if判斷來退出迴圈
    }
    x ++;
}

for ... in

for迴圈的一個變體是for...in迴圈,它可以把一個對象的所有屬性依次迴圈出來:

var o = {
    name: 'Jack',
    age: 20,
    city: 'Beijing'
};
for (var key in o) {
    console.log(key); // 'name', 'age', 'city'
}

要過濾掉對象繼承的屬性,用hasOnlyProperty()來實現:

var o = {
    name: 'Jack',
    age: 20,
    city: 'Beijing'
};
for (var key in o) {
    if (o.hasOwnProperty(key)) {
        console.log(key); // 'name', 'age', 'city'
    }
}

由於Array也是對象,而它的每個元素的索引被視為對象的屬性,因此,for...in迴圈可以直接迴圈出Array的索引:

var a = ['A', 'B', 'C'];
for (var i in a) {
    console.log(i); // '0', '1', '2'
    console.log(a[i]); // 'A', 'B', 'C'
}

請註意,for...in對Array的迴圈得到的是String而不是Number

while

for迴圈在已知迴圈的初始和結束條件時非常有用。而上述忽略了條件的for迴圈容易讓人看不清迴圈的邏輯,此時用while迴圈更佳。

while迴圈只有一個判斷條件,條件滿足,就不斷迴圈,條件不滿足時則退出迴圈。

do ... while

do{...}while()迴圈,它和while迴圈的唯一區別在於,不是在每次迴圈開始的時候判斷條件,而是在每次迴圈完成的時候判斷條件

註意:do{...}while()迴圈體會至少執行1次,而forwhile迴圈則可能一次都不執行。

小結

迴圈是讓電腦做重覆任務的有效的方法,有些時候,如果代碼寫得有問題,會讓程式陷入“死迴圈”,也就是永遠迴圈下去。JavaScript的死迴圈會讓瀏覽器無法正常顯示或執行當前頁面的邏輯,有的瀏覽器會直接掛掉,有的瀏覽器會在一段時間後提示你強行終止JavaScript的執行,因此,要特別註意死迴圈的問題。

在編寫迴圈代碼時,務必小心編寫初始條件和判斷條件,尤其是邊界值。特別註意i < 100i <= 100是不同的判斷邏輯。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • slice 從已有的數組中返回選定的元素。該方法不會修改數組,而是返回一個子數組。 語法:arr.slice(start,end) start: 必須,規定從何處開始選取。如果是負數,就是從尾部開始算起的位置(-1指最後一個元素,-2指倒數第二個元素); end: 可選,規定從何處結束選取。如果沒有 ...
  • 今天有了一個新需求,就是下拉框採用多選,因為以前都是用Extjs的多選框組件,領導說不好看,所以我就用了bootstrap框架實現,我現在把代碼共用一下,大家有需要的直接在hBuilder中打開,可以直接運行.下麵說一下我整合進項目中遇到的問題:1.寬高,邊距等等調整;如果想改下拉框的寬度直接修改b ...
  • 超文本標記語言,標準通用標記語言下的一個應用。“超文本”就是指頁面內可以包含圖片、鏈接,甚至音樂、程式等非文字元素。 ...
  • 簡單地記下jquery實現回車事件 全局: $(function(){document.onkeydown = function(e){ var ev = document.all ? window.event : e; if(ev.keyCode==13) { $('#FormId).submit ...
  • 如果對於正則基礎沒有太多瞭解的同學可以先看這篇文章: "初探正則表達式" 。 正則表達式是一個描述字元模式的對象, 的 類表示正則表達式, 和 都定義了方法,後者使用正則表達式進行強大的模式匹配和文本檢索於替換功能。 的正則表達式語法是 的正則表達式語法的子集。 JS中正則表達式的定義 JavaSc ...
  • Angular做項目的時候,難免會用到彈框(即模態框),如果模態框裡面有一張表格,表格裡面的數據需要從父組件(這裡暫且先說成父組件吧!)裡面獲取,模態框的表格裡面的數據經過修改,又傳回給父組件,這種通訊方式該怎麼實現?我們先來看一下最基本的自定義彈框代碼,看看有沒有什麼突破口。 一、基本的自定義彈框 ...
  • 判斷pdf、word文檔、圖片等文件類型(格式)、大小的簡便方法 ...
  • cookie(儲存在用戶本地終端上的數據) Cookie,有時也用其複數形式 Cookies,指某些網站為了辨別用戶身份、進行 session 跟蹤而儲存在用戶本地終端上的數據(通常經過加密)。 下載與引入jquery.cookie.js: 由於jquery.cookie.js是基於jquery的, ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...