# 洧杰第二週作業 ## 6/15(一) 第九關 ###### tags: `JS學徒特訓班` # Day9 **觀念總整理** - 幫小杰學會 Function 之呼吸 洧杰公告 之後的題目,當你上傳你的解法到 Slack 後,請用 thread 主動參與 2 個學員的討論, 1. 做得好的請在 thread 給對方讚美,看到有問題可以給予建議 2. 有參與學生討論,請在他的貼文下個 100 分或讚的 emoji 表情符號 ## 劇情開始 下班後小杰走在路上,很生氣回想著剛剛老闆碎念他工作效率很慢, 不是啊,為什麼不是先買一台 POS 機才對吧?用 Chrome console 來結帳是不是誤會了什麼? 但小杰心裡還是在想,該不會美式餐廳的業界其實都是這樣,還是是他自己見識太少,我自己的效率其實真的很慢吧? 小杰不禁大喊:「**到底誰可以救救我~~~**」 ![](https://i.imgur.com/8nGHtfy.png) ## 就在小杰崩潰之際 此時坐在外頭咖啡廳,一名其貌不揚的老先生說話了: ![](https://i.imgur.com/RGNPhjr.png) 小杰:「不,老先生是 JavaScri...」 老先生:「程式邏輯都一樣的,你沒學佛嗎?沒聽過一法通萬法通?」 小杰:「老先生我還有事先走了,謝謝..」 老先生:「**相見就是有緣**,我就傳授你幾招吧,但在傳授之前,我得先考考你慧根是否足夠,資質不到我沒法收你啊~」 小杰:「謝謝但是我 ---」 老先生:「來,接招吧!!!(拔刀深呼吸」 >> 雞同鴨講一番後,原來老先生想要傳授給小杰的招式,就是 function >> 但要傳授之前,老先生必須觀察小杰觀念是否 ok,才願意傳授給他 >> 快來一起幫幫小杰吧! # 題目 請回覆以下的 console.log 內容 ## 第一式:變數型別之呼吸 請回覆以下 console.log 內容 ```javascript= var a = 1; a+=1; a+=5; var b = 5; console.log(a+b); var c = 3; var d = "hello"; console.log(c*d); var e = 8 + 2 * "9"; console.log(e); var f = 1; var g = "2"; var h = 3; console.log(typeof(f+g+h)); ``` 答:12,NaN,~~NaN~~,string 第三個答案為26 ## 第二式運算子之呼吸 請回覆以下 console.log 內容 ```javascript= var total = 200; var isVip = true; console.log(total>=200 && isVip); var a = true; var b = false; console.log( a && b); console.log( a || b); var c = 10; var d = 20; var e = 30; console.log(c==10 && d>=5 && e !== 20); console.log(c==10 || d>=5 || e !== 20); console.log(c==5 || d>=40 || e !== 30); ``` 答: true false,true true,ture,false ## 第三式運算子之呼吸 請告知以下 console.log,哪些會印出? 如果你很閒,試試看最後一題改下布林值。 ```javascript= var maryIsVIP = true; if(maryIsVIP){ console.log("哇貴婦餒!"); }else{ console.log("你一定搞錯了,叫你們店長出來!"); } var momSwim = false; var girlfriendSwim = true; if(momSwim && girlfriendSwim){ console.log("都不救,因為他們都會游泳"); }else{ console.log("小杰大喊:「你們誰不會游泳啊??」"); if(girlfriendSwim){ console.log("那你自己游上來!"); }else{ console.log("我先問我阿母會不會游泳!"); } if(momSwim){ console.log("媽妳先自己游上來!"); }else{ console.log("媽我去救你!"); } } ``` 答: 哇貴婦餒! 小杰大喊:「你們誰不會游泳啊??」, 那你自己游上來!,媽我去救你!![](https://i.imgur.com/ZjMp6zZ.png) ### `6/16(二) 第十關` [CodePen](https://codepen.io/sihyu/pen/MWKjEzm?editors=1010) # 第十關 函式參數設計 隔日早晨,小杰前往老先生家裡的路上,心裡越想越不對。 為什麼老闆會准特休,放他去一個素未謀面的老先生家裡去特訓。早知道就不要跟老先生打賭,說什麼只要老闆允許請假,就答應特訓的請求!浪費了僅有的特休,小杰感到懊惱又無奈,只能安慰自己走一步算一步。 過沒半晌,小杰來到了老先生家裡,外牆上的招牌上寫著「**Java Script 補習班**」,等等..「Java Script」?為什麼中間會有空白,難不成我一直搞錯「JavaScript」的真正拼法..? 進入大廳有個圓形長桌,同時擺放了許多 Windows 老舊筆電,桌面上相當雜亂,有著刻意排出金字塔的玻璃能量飲料,而且還有各種明顯過時的書籍,例如「**Java 實戰 - 王者歸來**」、「**Java 之你不可不學的一百零八式**」,裡面還夾了些讓人匪夷所思的照片,例如下張。 ![](https://i.imgur.com/8tioepp.png) 最後小杰目光看到了一幅相框,是 2 人在餐廳的合照,手上共同拿著「鴻圖大展」的匾額。左邊明顯是年輕時的老先生,右邊的男性越看越眼熟,但卻一直無法聯想起來。 老先生:「少年,你來了,那我們就開始吧!」 小杰嚇了一跳,老先生不知何時已經坐在旁邊,並已經開啟電腦準備待續。 老先生:「我看過你第五關寫的 code 了,雖然比不上我當年,但還算差強人意!」 小杰:「謝謝讚美...咦老先生為什麼你看過—」 老先生:「叫我師父!特訓已經開始了,來吧!」 ## 第一題:客戶詢價函式,來更多個客人也不怕 請看完[函式教學影片](https://hackmd.io/@YmcMgo-NSKOqgTGAjl_5tg/Sk-_oGL2U/%2F6zQ3SasRR2GR-F3FW8SYVw)後,觀看下面截圖,請改設計一個詢價用的函式,並新增三個參數,依序為客戶姓名、薯條數量,漢堡數量。 同時來了三個客戶,請執行三次函式回報結果。 ![bobTotal = hamburgerPrice * 4 + friesPrice * 30 ](https://i.imgur.com/CmHOgT3.png) 答: ```-- var burgerPrice =50; //漢堡價錢 var friesPrice =40; //薯條價錢 var total; //總價 // console.log("Bob 您好,你詢問這金額總計為"+bobTotal+"元"); function inquiryMoney (guestName,friesNum,burgerNum){ total = (friesPrice*friesNum+burgerPrice*burgerNum); return guestName+"買的漢堡和薯條價錢為:"+total; } console.log(inquiryMoney('Alice',5,2)); console.log(inquiryMoney('Ashley',1,10)); console.log(inquiryMoney('Joanne',2,4)); ``` ## 第二題:好多客戶都在問小杰,他們錢包剩下多少錢,小杰表示無言 下面截圖,請改設計一個查詢客戶錢包餘額用的函式,並新增四個參數,依序為客戶姓名、客戶錢包總額、薯條數量,漢堡數量。 同時來了三個客戶,請執行三次函式回報結果。 ![markTotal = markWallet - hamburgerPrice * 1 + friesPrice * 3](https://i.imgur.com/dHRMz5v.png) 答: ```-- var burgerPrice = 50; //漢堡價錢 var friesPrice = 40; //薯條價錢 var guestWallet = 200; var guestTotal; //總價 // console.log("Bob 您好,你詢問這金額總計為"+bobTotal+"元"); function inquiryMoney (guestName,guestWallet,friesNum,burgerNum){ var remainingMoney = guestWallet -(friesPrice*friesNum+burgerPrice*burgerNum); return guestName+"錢包剩餘:"+remainingMoney; } console.log(inquiryMoney('Alice',2000,5,2)); console.log(inquiryMoney('Ashley',5000,1,10)); console.log(inquiryMoney('Joanne',1000,2,4)); ``` ## 第三題:好多人都擁有九折優惠券 這一題,換您來設計函式與參數看看。 突然間同時來了三個客戶,請執行三次函式回報結果。 ![maryTotal = maryWallet - hamburgerPrice *10 *sale -friesPrice * 10 * sale](https://i.imgur.com/su5ZNi5.png) 答: ```-- var hamburgerPrice = 50; /*不變*/ var friesPrice =40; /*不變*/ var sale =0.9; /*不變*/ var maryWallet =5000; var maryTotal; function finalMoney(guestName,guestWallet,hamburgerNum,friesNum){ //總共要付多少錢 var total = guestWallet-(sale*(hamburgerPrice*hamburgerNum+friesPrice*friesNum)); //回傳客人買完既定數量後,打九折,錢包剩多少錢 return guestName+"買完東西後,錢包剩下"+total+'元' ; } console.log(finalMoney('Alice',2000,5,3)); console.log(finalMoney('Joaane',3000,6,2)); console.log(finalMoney('Ashley',1000,3,1)); ``` ### 第十二關 # 第十二關 DOM 操作 小杰:「什麼!你拒收患者,為什麼啊?」 護理師:「沒辦法,這是院長的指示..」 好不容易來到醫院,想不到他們竟然拒收師傅看急診,原來是師傅和院長是老交情,三年前他們一起合作,打算搞一個「**大 AI 數據之 BMI 體重計**」,標榜著只要用儀器照張相,就能測量受測者的 BMI。 但不知道為什麼兩方突然鬧翻了,師傅一怒之下,在已經完工的儀器上,下了一道密碼,使得花了三億元的儀器無法正常開啟運作,這也讓院長氣得牙癢癢。 護理師:「院長說,除非他把儀器解鎖,他才願意幫他治療..」 小杰:「可是師傅現在已經進入昏迷了,你得先把他救活啊!」 護理師:「你師傅離開院長前,其實有給一個密碼提示,但我們醫護人員也看不懂 Code,不然你試試看?聽說這個解鎖知識,只要看這裡的[秘笈](https://hackmd.io/@YmcMgo-NSKOqgTGAjl_5tg/Sk-_oGL2U/%2F6zQ3SasRR2GR-F3FW8SYVw)就能輕鬆解開~」 小杰:「我一定是上輩子欠師傅太多,才淪落到現在這樣的地步...嗚嗚嗚,好,我解,我來解!」 ## 題目 1. 請觀看此 [Codepen](https://codepen.io/liao/pen/dyGpqGX?editors=1010) 的線索,試圖找到密碼,並在 Slack 上回傳密碼 2. 以下 Codepen 的 HTML 與 CSS 面板都壞掉了,你只能編輯 JS 面板,來去尋找線索 ![](https://i.imgur.com/fFknKA0.png) 答:https://codepen.io/sihyu/pen/mdVOaqW?editors=1010