---
# System prepended metadata

title: 設計魔劍二組
tags: [' Day10', JavaScript 實戰班]

---

---
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:
