switch 在比較值時,使用的是全等操做符 === ,所以不會發生類型轉換
switch的判斷條件 expression 能夠是String
、Number
、Boolean
、char
、枚舉
、null
、undefined
switch (expression) { case value1: // 代碼塊 break; case value2: // 代碼塊 ... default // 代碼塊 }
用來枚舉對象的屬性,枚舉順序不可預測
for-in、Object.keys 和 Object.getOwnPropertyNames 對屬性遍歷有什麼區別?html
能夠在代碼中添加標籤,以便未來使用。
應用場景:在嵌套循環中熟練應用 break, continue 與 Label 能夠精確的返回到你想要的程序的位置。express
let count = 0; for (let i = 0; i < 3; i++) { for (let j = 0; j < 3; j++) { if (i === 1 && j === 1) { break; } count++; } } console.log(count); // 7 //i = 0;i = 0 1 2 //j = 1;i = 0 1 //j = 2;i = 1 2
let count = 0; outBreak: for (let i = 0; i < 3; i++) { for (let j = 0; j < 3; j++) { if (i === 1 && j === 1) { break outBreak; } count++; } } console.log(count); //4
將代碼的做用域設置到一個特定的對象中。主要目的是爲了簡化屢次編寫對同一個對象的操做。
嚴格模式下不容許使用 with 語句。
with會延長做用域。
大量使用 with 語句會形成程序性能降低。segmentfault
let obj = { a: 123, b: 456, }; let a = 2; with (obj) { console.log(a);//123 }
let obj = { a: 123, b: 456, }; console.log(obj.a); console.log(obj.b); //用 with 簡化 with (obj) { console.log(a); console.log(b); }
用來產生一個斷點,代碼的執行會停在斷點的位置,這時使用調試器來輸出變量的值。數組