這篇隨筆主要是簡述一下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 不是屬性名