iT邦幫忙

2022 iThome 鐵人賽

DAY 14
0
自我挑戰組

I don't know JS yet系列 第 14

[ Day 14 ] I don't know JS yet - Let's review get-started ch2

  • 分享至 

  • xImage
  •  

進入 get-started ch3 之前,我想回顧一下 get-started ch2 讀了哪些 JS 的觀念:

  • values
  • declaring and using variables
  • functions
  • comparisons
  • how we organize in JS

values

values 分成 primitive values, 和 object values;
primitive values 包括:

  • string
  • number
  • bool
  • null
  • undefined

object values 包括:

  • array:comprised of an ordered and numerically indexed list of data
  • object

至於 function,function 是 object 的 sub-type。

賦值或者傳遞時,primitive valuescall by value,也就是 value 與 value 之間沒有關係; object valuescall by reference,也就是 value 與 value 之間是 reference 同一個物件,因此 reference 同一個 object 的 values,其中一個 value 的改變會影響另外一個 value。

declaring and using variables

在 JS 有三種方法宣告變數:

  • var : allow re-assigned
  • let : block-scoped, allow re-assigned
  • const : block-scoped, allow mutation, don't allow re-assigned

function

Function 是 object 的 sub-type,function 是 value,所以 function 可以被 assign 給變數,可以被當作參數傳遞。

  • function declaration : the association between the identifier and the function value happens during the compile phase of the code, before that code is executed.
  • function expression : an expression usually assign a anonymous function to a variable, a function expression is not associated with its identifier until that statement during runtime (because of 'hoisting')

comparison

  • strict equality : doesn't allow any coercion
  • loose equality : allow coercion

快速地看看下面的範例:

    [ 1, 2, 3 ] === [ 1, 2, 3 ]               // false
    { name: 'Cheryl' } === { name: 'Cheryl' } // false
    ( x => x*2 ) === ( x => x*2 )             // false

再次提醒自己

  1. strict equality 是 identity equality ( 看 reference )
  2. object values 以 reference 形式存在
  3. 上面的範例,彼此都是新的 object,所以 reference 也不同,identity equality 也就不會成立

how we organize in JS

  • classes
  • module

class
Class 是用來自定義一些資料及其邏輯的 type,要使用這個 class 必須先用 new 初始化。Class instance 是以物件的形式儲存,因此在定義 Class 的時候,要以 this. 來調用所有的 data, befaviors。

module

  • classic module (module factory) : 就像函式一樣,要使用 classic module 直接呼叫就可以了
  • ES module (ESM) : ESM 定義就是 'one file, one module',以 export, import 的方式來匯出、引用 ESM 的 public api ( 也就是可以被 access 的 data, methods )

[ 參考 ]


上一篇
[ Day 13 ] I don't know JS yet - Class & Module ( part 2 )
下一篇
[ Day 15 ] I don't know JS yet - Iteration
系列文
I don't know JS yet30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言