# 0421 JS part 3 - loop and function lidemyMentorProgram5th week2 day3 **ternary 三元運算子** condition ? A : B ( 條件?true的話是這個質 : false的話是這個質 ) `console.log ( 10 > 5 ? ‘bigger’ : ‘ smaller’ )` ``` var score = 60 var message = score >= 60 ? ‘pass’ : ‘fail’ console.log (message ) ``` 練習一:判斷是否及格 ``` if ( score >=60 ){ console.log ( 'pass' ) break } else if ( score < 60 ){ console.log ( 'fail' ) break } else if ( score ===100 ){ console.log ( 'you are no1!' ) break ``` 練習二:BMI 計算 ``` var height = 1.7 var weight = 60 var BMI = weight/(height^2) if (BMI < 18.5 ){ console.log('too light') }else if(18.5 <= BMI < 24){ console.log('normal') }else if(24 <= BMI < 27){ console.log('heavy') }else if(27 <= BMI < 30){ console.log('mild heavy') }else if(30 <= BMI < 35){ console.log('middle heavy') }else if(35 <= BMI){ console.log('severe heavy') } ``` **Loop 迴圈** > 一直做一樣的事情,直到某個條件後終止。 (如果沒有終止條件的話,就叫做無窮迴圈) do…while 迴圈 var i = 1 ``` do { if (i%2 ===1){ continue } console.log(i) i++ } while(i<=100) console.log(‘i=‘, i ) ``` *如果要用瀏覽器跑 js 的話 除了用 <script> 標籤包起來之外,裡面的第一行可以加 debugger 就可以一行一行跑,看結果,順便知道自己寫的程式怎麼被執行的* **while 迴圈** ``` var i = 1 while(i<=100){ console.log(i) i++ } console.log(‘i=‘, i ) — var i = 1 初始值 while(i<=100 條件 ){ console.log(i) 要輸出的內容 i++ 跑每一圈要做的事 } console.log(‘i=‘, i ) ``` **for loop 迴圈** for ( 初始值; 條件; 跑每一圈要做的事 ){ 要輸出的內容 } ``` for ( var i =1 ; i<=100 ; i++){ console.log(i) } ``` **for loop 和 陣列一起使用** ``` var scores = [1,2,3] for ( var i=0; i<=2; i++){ console.log ( scores [ i ] ) } 也可以寫成 var scores = [1,2,3] for ( var i=0; i< scores.lenght ; i++){ console.log ( scores [ i ] ) } ``` **函式 function** 在數學上就是 f(x) y 回傳值 = 函式f (x參數) 如果 f(a,b,c) = a+2b+3c 那寫成程式上的函式的話就是 ``` function abc(a,b,c) { return a + 2*b + c } ``` 使用 **return** 來回傳 function 函數名稱abc(參數a,b,c) { return 回傳 a + 2*b + c 回傳值 } console.log(1,2,3) **使用陣列** 想輸入數字,就可以得到該數字從1開始到該數字的陣列輸出 ``` function generateArray(n) { var resule = [ ] 先創造一個空陣列 for ( var i =1 ; i<=n ; i++){ result.push(i) return result } } console.log ( generateArray(10) ) ``` 呼叫函式要記得加 (參數) --- > 當 function 混用兩次時, > 第一次寫的時候是 參數(Parameter) > 第二次真正引用進去的叫做 引數(Argument) JS 提供使用 **Arguments** 把參數跟引數印出來的功能 印出來會是一個長得像陣列的物件 --- **內建函式** (至 https://developer.mozilla.org/en-US/ 可查更多資料) **Number 的內建函式** - 用 Number 把字串變成數字,或下 parseInt,parseInt還可以下是使用什麼進位 - 有浮點數的時候使用 parseFloat - 如果小數點後有太多位數,要捨去的話,再下 toFixed ( ) - Math 跟數學有關的,例如 Math.PI (PI 是常數,使用大寫) - Math.ceil ( ) 無條件進位,Math.Floor ( ) 無條件捨去 - Math.pow () 次方 **String 的內建函式** - toLowerCase 全小寫,toUpperCase 全大寫 - .charCodeAt () 取字串中的某個位置的號碼 (ascii code) - str.indexOf () 查詢這個字串內有沒有這個字串,下 console.log (index) 就會回傳出該字串的第一個字的位置 - str.length 查詢這個字串有多少字 **Array 的內建函式** - arr.join (‘ ‘) 把每個陣列內的元素用想要的字接在一起變成字串,沒輸入的話預設是空白 - arr.map (函式),把每個元素都帶入函式內 - arr.filter (函式) {} 把東西過濾 - arr.slice () 從某個位置上切掉,回傳新的陣列 - .splice () 插入或刪除元素,會直接改到原本的陣列 - .sort () 跟字母排序,也會改到原本的陣列 - .reverse () 反轉陣列,會改到原本的陣列 --- *記得多多使用 console.log 來 debug*