一個塊語句能夠用來管理零個或多個語句。該區塊是由一對大括號分隔。express
終止當前的循環,switch,label 語句,使程序跳到下一個語句執行。segmentfault
終止執行當前或標籤循環的語句,直接執行下一個迭代循環。數組
空語句用來表示沒有語句的狀況,儘管 JavaScript 語法指望有語句提供。瀏覽器
若是指定的條件是 true ,則執行相匹配的一個語句,若爲 false,則執行另外一個語句。閉包
語法函數
if (condition) { statements1 } else { statements2 }
condition值爲 true 或 false 的表達式this
statement1若是條件值爲 true 時執行的語句。可爲任意語句,包括更深層的內部 if 語句。要執行多條語句,使用語句塊 ({ ... }) 將這些語句分組;若不想執行語句,則使用空語句。debug
statement2若是條件值爲 false 且 else 從句存在時執行的語句。可爲任意語句,包括語句塊和更深層的內部 if 語句。調試
注意:全部不是 undefined,null, 0,NaN, 空字符串 (""), 以及任意對象,包括值爲false的Boolean對象, 在條件語句中都爲true。code
var b = new Boolean(false); if (b) //表達式的值爲true
計算表達式,將子句於表達式的值作匹配,執行與該值相關聯的語句。
語法
switch (expression) { case value1: // 當 expression 的結果與 value1 匹配時,今後處開始執行 statements1; [break;] case value2: // 當 expression 的結果與 value2 匹配時,今後處開始執行 statements2; [break;] ... case valueN: // 當 expression 的結果與 valueN 匹配時,今後處開始執行 statementsN; [break;] default: // 若是 expression 與上面的 value 值都不匹配時,執行此處的語句 statements_def; [break;] }
expression一個用來與 case 子語句匹配的表達式。
case expressionN case 子語句,用來與 expression 匹配。
statementsN 若是 expression 匹配其對應的 case 子語句,則執行此處的語句。
statements_def 若是 expression 沒有匹配到任何 case 子語句,則會執行此處的語句。
拋出一個用戶自定義的異常。
標記一個語句塊,並指定一個應該拋出異常的反饋。
聲明一個變量,可同時初始化。
語法
var varname1 [= value1 [, varname2 [, varname3 ... [, varnameN]]]];
varnameN 變量名。變量名能夠定義爲任何合法標識符。
valueN 變量的初始化值。該值能夠爲任何合法表達式。
注意:
聲明變量的做用域限制在其聲明位置的上下文中,而非聲明變量老是全局的。
function x() { y = 1; // 在嚴格模式(strict mode)下會拋出ReferenceError異常。 var z = 2; } x(); console.log(y); // 打印"1" 。 console.log(z); // 拋出ReferenceError: z未在x外部聲明。
聲明變量在任何代碼執行前建立,而非聲明變量只有在執行賦值操做的時候纔會被建立。
console.log(a); // 拋出ReferenceError。 console.log('still going...'); // 永不執行。 var a; console.log(a);// 打印"undefined"或""(不一樣瀏覽器實現不一樣)。 console.log('still going...'); // 打印"still going..."。
聲明變量是它所在上下文環境的不可配置屬性(non-configurable property),非聲明變量是可配置的(例如非聲明變量能夠被刪除)。
var a = 1; b = 2; delete this.a; // 在嚴格模式(strict mode)下拋出TypeError,其餘狀況下執行失敗並沒有任何提示。 delete this.b; console.log(a, b); // 拋出ReferenceError。 // 'b'屬性已經被刪除。
聲明一個塊級本地變量,能夠同時初始化。
聲明一個只讀的命名常量
聲明一個指定參數的函數。
語法
function name([param,[, param,[..., param]]]) { [statements] }
name 函數名
param 傳遞給函數的參數。一個函數最多有255個參數
statements 函數體
注意:一個被函數聲明建立的函數是一個 Function 對象,具備 Function 對象的全部屬性、方法和行爲。函數也能夠被表達式建立(二者區別在於函數聲明提高,函數表達式不能提高)
hoisted(); // logs "foo" function hoisted() { console.log("foo"); } //注意 function expressions 不會提高: notHoisted(); // TypeError: notHoisted is not a function var notHoisted = function() { console.log("bar"); };
構造函數使迭代器更容易使用。
指定函數的返回值。
語法
return [[expression]];
expression 被返回的表達式。若是忽略,則返回 undefined。
用途1:中斷一個函數的執行(用途2:閉包.默認狀況下,函數是返回 undefined 的。想要返回一個其餘的值,函數必須經過一個 return 語句指定返回值。關於閉包,參見 深刻淺出Javascript:閉包)
function counter() { for (var count = 1; ; count++) { // 無限循環 console.log(count + "A"); // 執行5次 if (count === 5) { return; } console.log(count + "B"); // 執行4次 } console.log(count + "C"); // 永遠不會執行 } counter(); // Output: // 1A // 1B // 2A // 2B // 3A // 3B // 4A // 4B // 5A
聲明一個類。
建立一個循環來執行語句,直到該語句條件表達式的值爲false。先執行語句,再執行條件表達式,該語句至少會執行一次。
建立一個由3個可選的表達式組成的循環,該循環用括號包裹,分號分割,並在循環體中執行語句。
語法
for ([initialization]; [condition]; [final-expression]) statement
initialization 一個表達式 (包含賦值語句) 或者變量聲明。典型地被用於初始化一個計數器。該表達式可使用var關鍵字聲明新的變量。初始化中的變量不是該循環的局部變量,而是與該循環處在一樣的做用域中。該表達式的結果無心義。
condition 一個條件表達式被用於肯定每一次循環是否能被執行。若是該表達式的結果爲true, 循環體內的語句將被執行。 這個表達式是可選的。若是被忽略,那麼就被認爲永遠爲true。若是計算結果爲false,那麼執行流程將被跳到for語句結構後面的第一條語句。
final-expression 每次循環的最後都要執行的表達式。執行時機是在下一次condition的計算以前。一般被用於更新或者遞增計數器變量。
statement 只要condition的結果爲true就會被執行的語句。 要在循環體內執行多條語句,使用一個 block 結構 ({ ... }) 來包含要執行的語句。沒有任何語句要執行,使用一個 empty 語句 (;)。
注意:for語句的全部的表達式都是可選的。固然能夠忽略全部的表達式。一樣的,確保使用了 break 語句來退出循環而且你還須要修改(遞增)一個變量,以確保可以正常執行break語句。
var i = 0; for (;;) { if (i > 3) break; console.log(i); i++; }
經過指定的變量迭代對象全部屬性的值。針對每一個惟一的屬性,會執行指定的語句塊。
無序遍歷對象的可枚舉屬性。語句針對每一個惟一的屬性。
遍歷可迭代的對象 (包括arrays, 類數組對象, iterators and generators),對每一個不一樣屬性的屬性,調用一個自定義的有執行語句的迭代鉤子。
建立一個循環語句,循環會一直持續到該語句條件表達式的值爲false。先執行條件表達式,而後執行語句。
調用可用的調試功能。若是沒有調試功能可用,該語句不生效。
用來導出函數,以便這些函數可以被導入到外部模塊或其餘script中。
用來引入外部的模塊或另外一個script中導出的函數。
帶標識的語句,與break或continue語句一塊兒使用。
拓展一個語句的做用域。