Skip to content

Instantly share code, notes, and snippets.

@chentsulin
Last active October 5, 2016 11:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save chentsulin/86f89fe9120e1a4fa063 to your computer and use it in GitHub Desktop.
Save chentsulin/86f89fe9120e1a4fa063 to your computer and use it in GitHub Desktop.
Week 2 - After class

Week 2

Homework Assignment

繳交方式

  • Deadline: 3/17 中午 12:00
  • 把檔案寄至 chentsulin@gmail.com,標題寫 [作業二/ 電機X XXX] (如果你已經會用 github 也可以寄 repo 連結過來)

1. 寫一個判斷並回傳型別的 function getType

Requirement

這個 function 需通過以下測試案例:

getType(1) // 'number'
getType(NaN) // 'NaN'
getType('1') // 'string'
getType(function() {}) // 'function'
getType({}) // 'object'
getType([]) // 'array'
getType(null) // 'null'
getType(undefined) // 'undefined'

Hint

  • 參照投影片內關於 typeof 的陷阱

2. 寫一個 counter

Requirement

  • count: 必須放在 closure 內作為 private variable,不能給別人直接修改,初始化為 0
  • getCount: 作為取用到 count value 的唯一 public method,回傳 count 當下的值
  • increase: 把 closure 內的 count 加一
  • decrease: 把 closure 內的 count 減一

Hint

  • 參考課程上 closure 的例子,把 public method return 出來,其他 private 的放在 closure 內

3. 寫一個 curring 化 (這不是個容易講解的詞彙,請往下看) 的 sum function

Requirement

一個一般的 sum function 長這個樣子:

function sum(a, b, c) {
  return a + b + c;
}

sum(1, 2, 3) // 6
sum(100, 25, 10) // 135

請寫一個 curringSum function 他是一個一個給參數,這樣使用:

curringSum(1)(2)(3); // 6
var add125 = curringSum(100)(25);
add125(10); // 135

備註:這邊不算是標準的 currying,不然應該也要支援 curringSum(1, 2)(3) 這樣的呼叫方式。

Hint

  • 需要用到 High-order function (接收 function 當參數或是以 function 當回傳值的 function)
  • Currying 的中文維基百科更好懂一些

Next Week Pre-reading

React

Tutorial 如果看起來很茫然,建議改成看線上教學影片

Tutorial 有一部分是尚未教過的 ajax,完全沒用過的人可能不容易懂。 以下影片看起來很多,不過長度都只有 1 - 3 分鐘

幾個很重要的 ES2015 語法

這五個以外的可以先不要看

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment