JavaScript基礎複習(4)

Photo by Eddie Tsy on Unsplash

使用條件式來判斷,並執行程式

這就好像分幣式存錢筒,根據錢幣大小來決定會落到哪個桶子。當你投入1元的時候,就會落到一元的桶子;投入5元,就會落到5元的桶子;10元就會落到10元的桶子。

在這裡是運用if, else if 及else來設下條件,並分別指派執行的程式為何。

if (條件式1){
//執行程式A
}else if(條件式2){
//執行程式B
}else{
//執行程式C
}
以上述存錢筒來說:
if (直徑2.5cm){
//落到10元存錢筒
}else if(直徑2.1cm){
//落到5元存錢筒
else{
//落到1元存錢筒
}
當然也不排除會丟入其他異物,導致存錢筒分類錯誤;
程式也是一樣,所以在設下條件的時候盡量要嚴謹一點。

開始實際運用

以AC提供的例子,

  1. 如果密碼小於8個字元,在console.log印出"密碼需大於等於8個字元"
  2. 如果密碼大於等於8個字元,在console.log印出”密碼可以使用!"
let password = 'admin'if (password.length<8){console.log("密碼需大於等於8個字元")}else{console.log("你的密碼已被接受")}
==>"密碼需大於等於8個字元"
-----------------------------------------------------
let password = 'admin'
password="dfdfgsdfgsdfg"
if (password.length<8){console.log("密碼需大於等於8個字元")}else {console.log("密碼可以使用!")}
==>"密碼可以使用!"
---------------------------------------------------------
如果使用者不小心送出空白的密碼欄呢?就像我上面所提到的,有時候會不小心混入"異物",這時候條件也需要嚴格把關。let password = 'admin'if (password.length<8&&password.length!==0){console.log("密碼需大於等於8個字元")}else if(password.length>=8){console.log("你的密碼已被接受")}else{"你沒有輸入密碼喔~"}這樣就可以啦😊

如果條件很多,那就一直使用else if、else if.....

最後一個必定是else。

迴圈(loop)是什麼?

其實就是可以讓程式自動化執行,跑完流程的一種指令碼。例如說今天我有一連串的遞增/遞減的步驟需要處理,或使用者希望可以重複執行程式時,這時候迴圈就非常好用。

以上述密碼來說,我們也許可以用迴圈來使用者不斷重新輸入,直到使用者輸入標準的密碼為止。

不過,也要小心因為條件設不好,導致無限迴圈(infinite loop)的產生。

這裡先介紹兩種迴圈:

  • while
  • for

while的意義與如何使用?

直到條件不滿足,while才會停止。

公式: 宣告變數
while(條件){
重複執行程式
迭代條件}

滿足條件,就重複執行;不滿足條件,脫離迴圈。
let x=1
while (x<=3){
console.log(`數數第${x}次!`)
x++}
console.log("數數完成!")
==>
數數第1次!
數數第2次!
數數第3次!
數數完成!

for的意義與如何使用?

可以控制迴圈的執行次數。

公式: for(宣告變數;條件;迭代條件){重複執行程式}
重複執行,完成執行次數,脫離迴圈。
for (let x=1;x<=3;x++){
console.log(`數數第${x}次!`)}
console.log("數數完成!")
==>
數數第1次!
數數第2次!
數數第3次!
數數完成!

如何控制迴圈,陸續印出陣列的內容?

印出哆啦A夢所有角色吧!const doraemonCharactor=["哆啦A夢","大雄","靜香","胖虎","小夫"]for(let x=0;x<doraemonCharactor.length;x++){console.log(doraemonCharactor[x])
}
==>
哆啦A夢
大雄
靜香
胖虎
小夫

中途脫離迴圈(break)

如果清單中有惡意程式碼,必須要脫離迴圈,可以用以下方法:

const doraemonCharactor=["哆啦A夢","大雄","靜香","胖虎",<malicious code>,"小夫"]
如果用上面的方法,會直接印出惡意碼,因此原先的程式要做出一些改變;
像是加入新的if條件、使用.indexOf("sting")來搜尋是否有惡意碼的片段"<"出現。
(我在AC例子中,追加了印出惡意程式碼的數量,只是模仿防毒軟體的報告而已)
const doraemonCharactor=["哆啦A夢","大雄","靜香","胖虎","<malicious code>","小夫"]let count=0
let wrongCode=0
for(let x=0;x<doraemonCharactor.length;x++){
if(doraemonCharactor[x].indexOf("<")>=0){
wrongCode++
break}
console.log(doraemonCharactor[x])
count++
}
console.log(`there is ${count} of Charactors. In this list, had found ${wrongCode} of malicious code.`)
==>
哆啦A夢
大雄
靜香
胖虎
there is 4 of Charactors. In this list, had found 1 of malicious code.
但是,印出的程式碼只到發現惡意碼後就停止了,差一個"小夫",正確名單並沒有完整被印出來。------------------------------------------------其實我覺得還有更好的方法:
當發現惡意程式碼,就馬上用.splice(x,1)給剪除...
(前提是惡意碼可以讓我刪除,如果刪除不了,那的確會出現問題。)
*splice(x,y):可以增加/刪除清單上的項目,序列從index=0開始,從index=x開始刪除,刪除到第y位。
const doraemonCharactor=["哆啦A夢","大雄","靜香","胖虎","<malicious code>","小夫"]
let count=0
let wrongCode=0
for(let x=0;x<doraemonCharactor.length;x++){
if(doraemonCharactor[x].indexOf("<")>=0){
wrongCode++
doraemonCharactor.splice(x,1)
}
console.log(doraemonCharactor[x])
count++
}
console.log(`there is ${count} of Charactors. In this list, had found ${wrongCode} of malicious code.`)==>
哆啦A夢
大雄
靜香
胖虎
小夫
there is 5 of Charactors. In this list, had found 1 of malicious code.

--

--

Lucy’s cornerstone
狐狸的葡萄酒

一位護理師,也是一位多元學習者。目前也在學習多益、股票投資,對很多東西都充滿好奇。