函式總結
if
(condition) statement1 else statement2
這裡的條件(condition)可以是任何表示式,並且求值結果不一定是布林值。ecmascript 會自動呼叫 boolean()函式將這個表示式的值轉換為布林值。如果條件求值為 true,則執行語句statement1;如果條件求值為 false,則執行語句 statement2。這裡的語句可能是一行**,也可能是乙個**塊(即包含在一對花括號中的多行**)。
if
(i >
25)
console.
log(
"greater than 25.");
// 只有一行**的語句
else
可以像這樣連續使用多個 if 語句:
if
(i >25)
else
if(i <0)
else
do-while 語句是一種後測試迴圈語句,即迴圈體中的**執行後才會對退出條件進行求值。換句話說,迴圈體內的**至少執行一次。
let i =0;
dowhile
(i <10)
;
只要 i 小於 10,迴圈就會重複執行。i 從 0 開始,每次迴圈遞增 2。
while 語句是一種先測試迴圈語句,即先檢測退出條件,再執行迴圈體內的**。因此,while 迴圈體內的**有可能不會執行。
let i =0;
while
(i <10)
變數 i 從 0 開始,每次迴圈遞增 2。只要 i 小於 10,迴圈就會繼續。
for 語句也是先測試語句,只不過增加了進入迴圈之前的初始化**,以及迴圈執行後要執行的表示式,語法如下:
let count =10;
for(
let i =
0; i < count; i++
)
在迴圈開始前定義了變數 i 的初始值為 0。然後求值條件表示式,如果求值結果為 true(i < count),則執行迴圈體。因此迴圈體也可能不會被執行。如果迴圈體被執行了,則迴圈後表示式也會執行,以便遞增變數 i。for 迴圈跟下面的 while 迴圈是一樣的:
let count =10;
let i =0;
while
(i < count)
初始化、條件表示式和迴圈後表示式都不是必需的。因此,下面這種寫法可以建立乙個無窮迴圈:
for(;
;)
for-in 語句是一種嚴格的迭代語句,用於列舉物件中的非符號鍵屬性。
for
(const propname in window)
這個例子使用 for-in 迴圈顯示了 bom 物件 window 的所有屬性。每次執行迴圈,都會給變數
propname 賦予乙個 window 物件的屬性作為值,直到 window 的所有屬性都被列舉一遍。與 for 迴圈一樣,這裡控制語句中的 const 也不是必需的。但為了確保這個區域性變數不被修改,推薦使用 const。
for-of 語句是一種嚴格的迭代語句,用於遍歷可迭代物件的元素。
for
(const el of[2
,4,6
,8])
for-of 語句顯示了乙個包含 4 個元素的陣列中的所有元素。迴圈會一直持續到將所有元素都迭代完。與 for 迴圈一樣,這裡控制語句中的 const 也不是必需的。但為了確保這個區域性變數不被修改,推薦使用 const。
for-of 迴圈會按照可迭代物件的 next()方法產生值的順序迭代元素。
標籤語句用於給語句加標籤。
start:
for(
let i =
0; i < count; i++
)
start 是乙個標籤,可以在後面通過 break 或 continue 語句引用。標籤語句的典型應用場景是巢狀迴圈。
break 和 continue 語句為執行迴圈**提供了更嚴格的控制手段。其中,break 語句用於立即退出迴圈,強制執行迴圈後的下一條語句。而 continue 語句也用於立即退出迴圈,但會再次從迴圈頂部開始執行。
let num =0;
for(
let i =
1; i <
10; i++)
num++;}
console.
log(num)
;// 4
let num =0;
for(
let i =
1; i <
10; i++)
num++;}
console.
log(num)
;// 8
break 和 continue 都可以與標籤語句一起使用,返回**中特定的位置。這通常是在巢狀迴圈中。
let num =0;
outermost:
for(
let i =
0; i <
10; i++)
num++;}
} console.
log(num)
;// 55
let num =0;
outermost:
for(
let i =
0; i <
10; i++)
num++;}
} console.
log(num)
;// 95
with 語句的用途是將**作用域設定為特定的物件。
使用 with 語句的主要場景是針對乙個物件反覆操作,這時候將**作用域設定為該物件能提供便利,如下面的例子所示:
let qs = location.search.
substring(1
);let hostname = location.hostname;
let url = location.href;
使用 with 語句
with
(location)
這裡,with 語句用於連線 location 物件。這意味著在這個語句內部,每個變數首先會被認為是乙個區域性變數。如果沒有找到該區域性變數,則會搜尋 location 物件,看它是否有乙個同名的屬性。如果有,則該變數會被求值為 location 物件的屬性。嚴格模式不允許使用 with 語句,否則會丟擲錯誤。
switch
(expression)
這裡的每個 case(條件/分支)相當於:「如果表示式等於後面的值,則執行下面的語句。」break關鍵字會導致**執行跳出 switch 語句。如果沒有 break,則**會繼續匹配下乙個條件。default關鍵字用於在任何條件都沒有滿足時指定預設執行的語句(相當於 else 語句)。
雖然 switch 語句是從其他語言借鑑過來的,但 ecmascript 為它賦予了一些獨有的特性。首先,switch 語句可以用於所有資料型別,因此可以使用字串甚至物件。其次,條件的值不需要是常量,也可以是變數或表示式。
switch
("hello world"
)
第乙個條件實際上使用的是表示式,求值為兩個字串拼接後的結果。因為拼接後的結果等於 switch 的引數,所以console.log 會輸出"greeting was found."。能夠在條件判斷中使用表示式,就可以在判斷中加入更多邏輯:
let num =25;
switch
(true
)
switch 語句在比較每個條件的值時會使用全等操作符,因此不會強制轉換資料型別(比如,字串"10"不等於數值 10)。函式可以封裝語句,然後在任何地方、任何時間執行。ecmascript 中的函式使用 function 關鍵字宣告,後跟一組引數,然後是函式體。
function
sayhi
(name, message)
通過函式名來呼叫函式,要傳給函式的引數放在括號裡(如果有多個引數,則用逗號隔開)。
sayhi
("nicholas"
,"how are you today?");
//輸出hello nicholas, how are you today?
ecmascript 中的函式不需要指定是否返回值。任何函式在任何時間都可以使用 return 語句來返回函式的值,用法是後跟要返回的值。
function
sum(num1, num2)
const result =
sum(5,
10);//15
注意的是,只要碰到 return 語句,函式就會立即停止執行並退出。因此,return 語句後面的**不會被執行。
return 語句也可以不帶返回值。這時候,函式會立即停止執行並返回 undefined。這種用法最常用於提前終止函式執行,並不是為了返回值。
嚴格模式對函式也有一些限制:
C 語言基礎 03 語句
按照複雜度分類 空語句 簡單語句 複雜語句 按照功能分類 選擇語句 迴圈語句 轉移語句 if 條件 1 if是關鍵字 2 if後面 跟圓括號 3 圓括號裡面寫條件條件必須要能夠轉化為bool 4 圓括號後面跟大括號 5 大括號裡面寫語句 注意 乙個if語句 只管後面乙個語句 復合語句也是乙個語句 e...
day03 Java語言基礎
b 案例演示 邏輯運算子的基本用法 注意事項 c 結論 邏輯與 有false則false。邏輯或 有true則true。邏輯異或 相同為false,不同為true。邏輯非 非false則true,非true則false。b 同理 和 的區別?學生自學 c 開發中常用誰?b 案例演示 b 面試題 b ...
PHP語言基礎03 By ACReaper
03.01邏輯運算子 and or xor這裡只強調一點用and或者or的話,記得加上括號,不然可能出錯,至於原因我也不是很清楚,反正盡量直接用 就行了,c中也是用這兩個。03.02位運算子 bitwise operators php中的位運算子也是針對整數。除非兩個運算子都為字串,不然就將其中乙個...