前面有說過JavaScript是動態型別,也就是說在執行時,變數會依照賦予的值來決定他的型別,可以不斷改變。
例如JavaScript的:
var ab='hello' //string
ab=12 //number
若是Java等靜態型別的語言,會先定義變數的型別,而且賦予一個型別另一個型別的值可能導致錯誤:
例如java的:
int a="你好" //出現型別的錯誤
**JavaScript 也是弱型別語言,
弱型別容忍隱性的型別轉換,但是怎麼轉換是它自己決定。
想看更多可以點擊最下面參考連結的第一個!
簡而言之就是一組組的鍵與值的配對,值可以為任意資料型別,
而這些值又可以是另一個「鍵/值」的組合。也就是說一個物件可以連結另一個物件
如圖(取自克服JS的奇怪部分)
物件可以有屬性與方法。
有兩種宣告形式:
1.宣告式(declarative)或字面形式(literal),也是物件實體語法:const person = { name: 'Ivy' };
2.建構形式(constructed form)//比較少用const person = new Object(); person.name = 'Ivy';
而function, array等的屬於物件型別
JavaScript的六種原始型別,都是純值,沒有屬性。
表示還不存在,直到你給這個變數初始值
JavaScript 給所有變數的初始值,
但我們不應該主動賦予變數undified
也是不存在的意思,但是我們可以設變數為null,已表示這個變數沒有值
有true, false兩種
JS只有一種數值型態,Numeber,他是浮點數,永遠有小數在後面,跟其他程式語言不同,例如java還有分整數型態與浮點數型態等,雖然我們也可以使用整數,但JS只有number型態。
由一連串字符組成,外面包著單引號或雙引號。
EX:'hello!'
Symbols 是ES6引入了一個新的數據類型,
保證每個創建的Symbol都是獨一無二的值。
創建方法如下:
let sym1 = Symbol()
let sym2 = Symbol('Ivy')
let sym3 = Symbol('Ivy')
我們可以用typeof這個方法去檢查null以外的型別,為甚麼是null以外呢?
typeof null
//'object'
typeof undefined
//'undefined'
這是一個小bug,null 應該是 null啊!
參考資料:
六角學院 JS 核心筆記 (十二)【運算子、型別與文法】- 動態型別和弱型別
JS 中的 Symbol 是什么
你懂 JavaScript 嗎?#17 物件(Object)