ES語言基礎03

2021-10-11 11:45:23 字數 4827 閱讀 4330

函式總結

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中的位運算子也是針對整數。除非兩個運算子都為字串,不然就將其中乙個...