你不知道的 js 保留字

来源:https://www.cnblogs.com/csxairou/archive/2018/08/26/9539301.html
-Advertisement-
Play Games

這篇隨筆主要是簡述一下js保留字的各種能力,會慢慢的更。。。 ...


0.0  如有什麼紕漏或者錯誤,請各位大神指點以及時修正。。

除了正經( 震精 (○´・д・)ノ )的描述保留字,還會說一些側面知識。

一、保留字的分類:

  先是籠統的說一下有什麼保留字,保留字的話根據犀牛書的劃分,可有分為以下幾類:

  ① :基礎保留字: 這類保留字是最常用也是最常用到的,如:for、belete、void 

  ② :嚴格模式下的保留字:這類保留字會在你使用嚴格模式下列為保留字,如:let 、protected 等。

  ③ :嚴格模式下的不完全保留字: 如:arguments、eval ;

  ④ :ECMAScript3的保留字:如果你希望你的代碼運行在基於ECMAScript 3 的解析器上,那麼你應該瞭解一下。

  ⑤ :ECMAScipt 5 的保留字class、const

  ⑥ :全局變數和函數: 這類放在保留字,主要是為了避免污染,應該避免以他們的名字定義變數名和函數名,如: Function、encodeURL 等。

 

二、基礎保留字:

    全部的基礎保留字:

    break ; delete ; function ; return ; typeof ; case ; do ; if ; switch ; var ; catch ; else ; in ; this ; void ; continue ; false ; true ; instanceof ; throw ; while ; debugger;     finally ; new ; with ; default ; for ; null ; try ;     1. 我們先來說說迴圈類的 for / switch / case / default / while / do / continue / break ;     —— 三大基礎迴圈相信大家都是有瞭解的,這裡就只做簡單的描述,缺乏基礎的同學可以先去 W3school 看看;      -- 首先簡述一下switch / case / default 這三個    
 1 var n;
 2     switch (n) {
 3         case 2: // ==> if ( n === 2 )
 4             console.log(1)
 5         break;
 6         case '2':
 7             console.log(2)
 8         break;
 9         default:
10         console.log('n與上面case的值都不相等時執行 default 內的代碼塊')
11     }
switch 基礎

  簡單的說,你只要把 switch (n) 內的值 n 和 case m 後的值 m 當成是 if () 內執行 n===m 就容易理解了,所以:

var n = '2';
    switch (n) {
        case 2:
            console.log(1)
        break;
        case '2':
            console.log(2)
        break;
        default:  // 傳說中的替補隊員,存在break的情況下,只有前面都不為真時會觸發。
        console.log('n與上面case的值都不相等時執行 default 內的代碼塊')
    }
// 上面的代碼輸出的會是->  2

  值得提醒一下新人的是,如果不添加 break 語句的話,switch 會繼續執行至整個迴圈結束。例如:

var n = '2';
    switch (n) {
        case 2: // ==> if ( n === 2 )
            console.log(1)
        case '2':
            console.log(2)
        default:
        console.log('我被執行了')
    }
// 輸出->  2
// 以及輸出-> 我被執行了

 

   -- 來,我們加快步伐,看看 for / for in 語句:  
// 平常我們寫 for 迴圈 
    for (var i=0; i<5; i++) {
        console.log(i)
    }
// 依次輸出 0 1 2 3 4

// 也可以寫成這樣
    var i=0,len=5;
    for (; i<len ;) {
        console.log(i)
        i++
    }
// 輸出結果是一樣的 0 1 2 3 4

// for in 迴圈
    var data={a=1},x;
    for (x in data) {
        console.log( x )  // a 屬性名
        console.log( data[x] )   // 1 屬性值
    }

 

  --  while / do while 語句:
// while - 當指定的條件為 true 時迴圈指定的代碼塊

    var i = 0;
    while (i<3) {   // 如果條件為真,那就繼續執行
        console.log(i);
        i++;
    }
// 輸出 0 1 2
// 值得註意的是,如果你忘記增加條件中所用變數的值,該迴圈永遠不會結束。該可能導致瀏覽器崩潰

// do/while 迴圈
    var i = 3;
    do {
        console.log(i);
        i++;
    }
    while (i<3);
// 輸出 3 
// 無論條件是否為真,都先執行一邊do內的代碼塊

 

  -- 接下來比較有趣,我們說說跳出迴圈的兩種保留字(break / continue)和如何給迴圈命名。
// 跳出迴圈
// break 語句用於跳出迴圈。  // 跳出整個迴圈.
// continue 用於跳過迴圈中的一個迭代。 // 跳出當前次迴圈,進入下一個迴圈。
例如:--break
    for (var i=0; i<5; i++) {
        if(i == 1){
            break;
        }
        console.log(i)
    }
//   輸出 0

--continue
    for (var i=0; i<5; i++) {
        if(i == 1){
            continue;
        }
        console.log(i)
    }
// 輸出 0 2 3 4 

  並且我們可以給迴圈命名,讓 continue 或者 break 跳出指定迴圈,例如:

var text = "";
var i, j;  // => var i; var j
Loop1: // 第一個迴圈標簽 "Loop1"
for (i = 0; i < 3; i++) {
text += "i = " + i + ", j = ";

    Loop2: // 第二個迴圈標簽 "Loop2"
    for (j = 10; j < 15; j++) {
        if (j == 12) {
            break Loop1;
        }
        console.log( text += j + " " );
    }
}

// 第一次輸出   i = 0, j = 10 
// 第二次輸出   i = 0, j = 10 11     

  這裡我們給第一個迴圈定義了一個名字,叫 Loop1 ,註意,這裡給迴圈定義的名字和 var 定義變數絲毫不衝突,例如:

var Loop1 = 999;
Loop1 : for (var i = 0; i < 3; i++) {
    console.log(Loop1)
}

// 定義了Loop1,輸出的會是三次999

但是如果不定義變數Loop1,將會拋出錯誤,只要break和continue可以使用
Loop1 :
for (var i = 0; i < 3; i++) { console.log(Loop1) } // Loop1 is not defined

  !!!註意的是,continue只能用於迴圈,但是我們的break可不止這些,還能跳出代碼塊,例如:(給某一塊代碼命名)

cars=["BMW","Volvo","Saab","Ford"];

list: {
    console.log( cars[0] );    // BMW
    console.log( cars[1] );    // Volvo
    console.log( cars[2] );    // Saab
    break list; // 跳出list標簽-代碼塊
    console.log( cars[3] );
    console.log( cars[4] );
    console.log( cars[5] );
}
console.log(list)    // list is not defined
console.log(typeof list) // undefiled

  用法是我們可以使用名字xxx:{}去定義一整個代碼塊,當條件合適的時候跳出,註意,list 不是變數,你在前後定義一個同名變數並不會將之覆蓋,現在的寫法只是定義了

花括弧內的這一塊代碼塊的名字而已。

    睡覺覺~~~下一節說一說 in 操作符,預告:   in 語句分單獨使用和for-in迴圈中使用,在單獨使用時, in 操作符會在通過對象能夠訪問給定屬性時返回 true ,無論該屬性存在於實例中還是原型中。   
var mycar = {make: "Honda", model: "Accord", year: 1998};
console.log("make" in mycar)  // 返回true
console.log("model" in mycar) // 返回true
console.log("Honda" in mycar) // 返回false 不是屬性名

 

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

-Advertisement-
Play Games
更多相關文章
  • 0.sql的執行順序 手寫順序 機讀順序 總結 ①From:對from左邊的表和右邊的表計算笛卡爾積,產生虛擬表c1 ②On:對c1中的數據進行on過濾,只有符合過濾條件的數據記錄才會記錄在虛擬表c2中 ③Join:若指定了連接條件(left、right),主表中的未匹配的行就會作為外部行添加到c2 ...
  • 新如何學習大數據技術?大數據怎麼入門?怎麼做大數據分析?數據科學需要學習那些技術?大數據的應用前景等等問題,已成為熱門大數據領域熱門問題,以下是對新手如何學習大數據技術問題的解答! 大數據開發學習可以按照以下內容進行學習: 第一階段:JavaSE+MySql+Linux 學習內容:Java 語言入門 ...
  • 一、 子查詢的定義 出現在其他語句中的select語句,稱為子查詢或者內查詢,外部的查詢語句稱為主查詢或者外查詢,子查詢可以包含普通select可以包含的任何語句。 外部查詢:select、insert、update、delete、set等,主要就是在select的應用。 二、 子查詢的分類 1.按 ...
  • 為什麼引入CSS Modules 或者可以這麼說,CSS Modules為我們解決了什麼痛點。針對以往我寫網頁樣式的經驗,具體來說可以歸納為以下幾點: 全局樣式衝突 過程是這樣的:你現在有兩個模塊,分別為A、B,你可能會單獨針對這兩個模塊編寫自己的樣式,例如a.css、b.css,看一下代碼 下麵是 ...
  • 假鏈接,其實就是指向當前頁面的一個鏈接,他具有鏈接的樣式,但不會跳轉。有時候在寫前端頁面的時候,沒有後臺的數據,我們的鏈接指向就成問題。因為你不知道要指向哪裡,這時候就可以給他設置一個假鏈接,等到後臺代碼開發出來,再重新改過來。 假鏈接有兩種形式,<a href ="#" ></a>,<a href ...
  • 譯者按: 搞定面試,不要急著刷題,先弄懂什麼是數據結構! 原文 : "The top data structures you should know for your next coding interview" 譯者 : "Fundebug" 為了保證可讀性,本文采用意譯而非直譯。另外,本文版權歸 ...
  • 我之前因為項目用bootstrap比較多,所以使用font awesome字體圖標比較多,後來接觸到了iconfont,發現想要的什麼圖標都有,還可以自定義圖標,非常強大!之前看了一波教程,覺得繁瑣,自己弄明白後感覺如此簡單,做了這麼個簡單教程,直接上圖,簡單粗暴,避免新手走彎路,這裡講解的預設是元 ...
  • WebSocket是單個TCP連接上進行全雙工通信的協議 在WebSocket的API中,客戶端與伺服器只需要進行一次握手就可以保持持久的連接,並可以雙向傳輸數據 與HTTP不同的是,WebSocket需要先創建連接,連接成功之後就可以進行通信,而且通信時,請求頭部可以減少部分狀態信息 創建WebS ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...