iT邦幫忙

0

為了轉生而點技能-javascript,day4(初探型別

動態型別

定義:變數會因為值性質的不同,而在***執行階段***才會賦予確立型別有不同的型別;同一個變數,更可以因為不同的值,而轉換成不同的值。

EX:
var a = 'she';
var a = 5 ;

變數a原本的型別是string(字串);因為被賦予新的值5,而改變原本的型別從string變成number。

顯性的轉換(explicit conversion):程式碼中刻意寫出來的型別轉換的動作,就是explicit conversion,如上面例子。

隱性的轉換(implicit conversion):在程式碼中沒有明確指出變數要轉換型別卻轉型的,就是implicit conversion,請看下面例子,至於詳細轉換規則,請看為了轉生而點技能-JavaScript,難題紀錄(二)隱式轉換規則及===、==

https://ithelp.ithome.com.tw/upload/images/20211122/20143762yO7FMzIvKO.jpg


javascript的原始型別(primitive data type):

  1. Null
  2. Undifined
  3. Boolean
  4. Number
  5. String
  6. BigInt
  7. Symbol

https://ithelp.ithome.com.tw/upload/images/20211122/20143762YsHSC7gVa3.jpg
https://ithelp.ithome.com.tw/upload/images/20211122/20143762KxzhLotdci.jpg

包裹物件:除了null跟Undifined,每個原始型別都相對應的包裹物件(Primitive wrapper objects),詳細對應屬性操作可以參考MDN的Primitive wrapper objects in JavaScript,當我們去存取基本型別(String、Number 與 Boolean )的屬性時,它就只會在「那一刻」被轉型為該類別的「物件型別」,回傳對應的屬性後,即刻銷毀恢復成基本型別。

javascript的物件型別 ( Object Type )

  1. 因為 JS 內只有兩種分類,所以「除了原始型別的型別,都是物件型別」。
  2. 函式也是是物件的一種,稱為「 函式物件 ( Function Object ) 」。
  3. 透過 new Function 關鍵字建立(注意 F 大寫) 函式物件,使用時將參數與函式的內容依序傳入 Function,就可以建立一個函式物件。
  4. 物件型別當中,又可以再細分出幾種「建構器」(Constructor):
  • String()
  • Number()
  • Boolean()
  • Array()
  • Object()
  • Function()
  • RegExp()
  • Date()
  • Error()
  • Symbol()
    這些建構器都可以透過 new 關鍵字來產生一個對應物件,new 加上 建構器。
var str = 'Hello';
typeof str;        // "string"

var strObj = new String('Hello');
typeof strObj;     // "object"

參考:

  1. *重新認識 JavaScript: Day 23 基本型別包裹器 Primitive Wrapper:https://ithelp.ithome.com.tw/articles/10193902*
  2. **重新認識 JavaScript: Day 10 函式 Functions 的基本概念:https://ithelp.ithome.com.tw/articles/10191549

尚未有邦友留言

立即登入留言