iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 4
1

大綱:

  • 選擇結構
  • 重複結構
  • 錯誤及例外處理

選擇結構:if...else 敘述
如果條件運算式有兩種以上不同的選擇,則可以使用 if-else 敘述,格式如下:

if (條件運算式) {
   條件敘述;
}  else {
   條件敘述;
}

當 if 條件運算式的值成立 (true),將執行 if 程式敘述內的程式,並跳過 else 內的敘述。當 if 條件運算式的值不成立 (false),則執行 else 內的程式敘述。

選擇結構:switch...case 敘述
想要根據變數或運算式的值來決定執行的程式時,就可以使用 switch...case 敘述,,格式如下:

switch (變數或運算式)
{
  case valus1:
    程式敘述;
    break;
  case valus2:
    程式敘述;
    break;
    .
    .
  case valusN:
    程式敘述;
    break;
  default:
    程式敘述;
}

重複結構:for 迴圈
for 迴圈的變數可以使用 const、let 或 var 來宣告,使用 const、let 宣告的變數生命週期指在迴圈裡,迴圈執行結束就跟著結束,格式如下:

for(let 變數起始值; 條件式; 變數增減值)
{
  程式敘述;
}

重複結構:for 迴圈
for...in、forEach、for...of 迴圈主要是用來遍歷可疊代物件,所謂的「遍歷」是指不重複拜訪物件元素的這個過程。for...in 是針對具有可列舉屬性的物件使用,格式如下:

for (let 變數 in 物件) {
  程式敘述;
}

重複結構:forEach
forEach 迴圈只能用於 Array、Map、Set 等物件,用法與 for...in 相似,格式如下:

物件 .forEach(function (參數, [,index]){
  程式敘述
})

function 也可以使用 ES6 規範的箭頭函式,格式如下:

物件 .forEach(參數 => {
  程式敘述
})

重複結構:for...of 迴圈
for...of 迴圈語法看起來與 for...in 相似,應用的範圍廣泛,像是 Array、Map、Set、String、argunents 物件都可以使用,不過不能用來遍歷一般物件,變數可以使用 const,let 或 var 來宣告,格式如下:

for (let 變數 or 物件) {
  程式敘述
}

重複結構:while 迴圈
while 迴圈格式如下:

while (條件式判斷)
{
  程式敘述
}

使用 While loop 有兩個要注意的點:

  1. 必須先指定變數的起始值。
  2. 條件式中的變數值的增減,必須寫在 while{} 內,否則便數 i 永遠不會改變,迴圈一直執行就會造成無窮迴圈。

重複結構:do...while 迴圈
do...while 迴圈格式如下:

do {
  程式敘述
}
while (條件式)

do...while 迴圈與 while 迴圈一樣都必須注意要指定變數起始值並在迴圈內指定變數的增減值。

重複結構:break 和 continue 敘述
break 和 continue 敘述可以用來控制迴圈流程。break 敘述的作用是強迫中止迴圈的執行,跳出最靠近的迴圈,直接執行迴圈外的第一行指令。

例如:
if (i>5) break;
continue 敘述的作用是馬上回到迴圈的一開始,再繼續執行迴圈。

錯誤及例外處理:錯誤類型
當 JavaScript 程式執行發生錯誤時,會丟出例外狀況,JS 會去尋找程式裡有沒有例外處理程式,如果沒有例外處理的程式碼,JavaScript 引擎就會停止並拋出錯誤。

常見的錯誤有以下四種:

  1. SyntaxError:語法錯誤。語法錯誤最常見的狀況是語法輸入錯誤或者中括號 () 或大括號 {} 不完整造成的狀況。
  2. Uncaught ReferenceError:引用錯誤。引用一個未定義的變數或者賦值錯誤。
  3. RangeError:範圍錯誤。當值在不允許的範圍。
  4. TypeError:類型錯誤。型別和預期的不同或者呼叫不存在的函數都會拋出 TypeError。

錯誤及例外處理:例外處理
JavaScript 的 try...catch...finally 例外處理機制可以幫助我們捕捉程式執行時的錯誤,try 區塊是要監控的程式碼。catch 區塊是例外發生時的處理程序。格式如下:

try {
  需要監控的程式碼
}
catch (exception) {
  處理例外的程式碼
}
finally {
  結束執行的程式碼
}

try 敘述必須至少搭配一個 catch 敘述或 finally 敘述,因次 try 敘述會有底下三種形式:

  1. try...catch
  2. try...finally
  3. try...catch...finally

在 try...catch 區塊有時會在最後加上 finally 區塊,不管是否有例外出現,finally 區塊內的程式碼都會執行,因此在 finally 區塊通常會寫釋放資源的程式碼,像是關閉檔案或關閉串流物件等程式碼。


上一篇
[Day03] JavaScript - JavaScript 變數與資料型別
下一篇
[Day05] JavaScript - JavaScript 內建標準物件 (上)
系列文
好 Js 不學嗎 !? JavaScript 入門中的入門。30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
x31131211
iT邦新手 5 級 ‧ 2020-03-04 14:06:07
if($Prepare>0) //   $Prepare為-15
{
  for(i=1;i<=$Taking;i++) //錯誤的第43行,$Taking為21
  {
    print 1;\n
  }
  for(i=1;i<=$Prepare;i++)//$Prepare為正數時執行
  {
    print 0;\n
  }
}
else
{
  for(i=1; i<=$Taking;i++) //$Prepare非正數時執行
  {
    print 1;\n
  }
}

想請問文法上有什麼錯誤
執行後一直說
syntax error, unexpected '=', expecting ';' in D:.php on line 43
google也不清楚原因,看文法上沒錯才是

我要留言

立即登入留言