--- tags: JavaScript 實戰班, Day10 --- # 設計魔劍二組 ## 6/19:Day 10 小明再怎麼樣隱匿,還是躲不過警方的搜查,在警方發現小明就是匯款者前,小明也先找到空檔逃離了真心鎮,傷心、難過的小明也因此一無所有。 ![](https://i.imgur.com/mcjuVUW.png) 離開真心鎮的小明在郊區遊蕩,身無分文、沒有求生技能的他,在六小時沒吃東西的情況下終於支撐不住,來到了一戶人家尋求協助,希望能夠填飽空腹已久的肚子,敲了敲門以後: - 一位年輕的女孩:請問是哪裡找呢? - 小明:... - 一位年輕的女孩:請問有什麼事嗎? - 小明:... 小明突然發現自己不能說話了!!沒有辦法跟女孩說到自己需要什麼,請協助小明說出自己的需求。 任務: - 請修正以下程式碼錯誤,並執行 console 的內容 - 請嘗試說明以下程式碼錯誤的原因 ```js var saySomething = '小姐我好餓啊~~~' (function() { console.log(saySomething) }) ``` --- #### Gaga (補交 6/18 作業) 6/18 的作業,謝謝助教~ ```javascript= var Auntie = { name: '漂亮阿姨', age: 21, deposit: 10000, depositRecord: [ { title: '小明匯款紀錄', amounts: 77777 } ] }; //for…in 方法: 淺層賦值 var MingMoneyTransferRecord = {}; for (var prop in Auntie.depositRecord) { MingMoneyTransferRecord[prop] = Auntie.depositRecord[prop]; } console.log(MingMoneyTransferRecord); console.log(MingMoneyTransferRecord === Auntie.depositRecord); ``` [codepen link](https://codepen.io/gagajia/pen/YzwNQLb) > 助教回覆:作業做的不錯喔 :+1: 有正確複製 Auntie.depositRecord 物件,不過本次作業, 可以嘗試 JSON 這個方法喔,卡斯伯老師有公告:"資料結構"要相同,但是"參考"要不同 ~ 因為 JSON 是直接轉字串再轉回物件,因此記憶體指向不同, 所以使用 JSON 複製出來的物件和原本物件 "參考" 是不同的,如下面範例。 https://codepen.io/Isshin/pen/gOPgWKB?editors=1111 #### Gaga 6/19 的作業,謝謝助教~ 此 function 為立即函式,後面須加上()方可執行。 立即函式:不需在其他地方呼叫,也可被執行。 ```javascript= var saySomething = '小姐我好餓啊~~~'; (function() { console.log(saySomething) })(); ``` > 助教回覆:作業做的很好哦,觀念也很正確 :+1: #### JimmyWu ```javascript= var saySomething = '小姐我好餓啊~~~'; // 函式表達式 - 說明這是一個沒執行的函式 (function(){}); console.log('(function(){})', (function(){})); // 解法一 // (function() { // console.log(saySomething) // })(); // 解法二 (function() { console.log(saySomething) }()); /** 完整說明: - 立即函式 ( Immediately-Invoked Function Expression - IIFE ) 前方與宣告變數結尾處補上 ';' 表示結束。 - 最外層的 '()' 是與語法分析器表達一個函式表達式,所以 '(function(){})' 只是說明有個函式,但還沒有被執行,透過 console.log() 會回應是個函式。 - 立即函式 ( IIFE ) function 外的 () 本身是執行,共有二種寫法'(function(){})()' 與 '(function(){}())',後方的 '()' 可放於圓括號結尾與裡面,執行結果一樣。 ``` [codepen link](https://codepen.io/Jimmy_Wu/pen/qBbRxdN?editors) > 助教回覆:作業做的很好哦,觀念也很正確 :+1: