JavaScript學習筆記
JavaScript
- 嚴格區分大小寫;
- 數據類型:
Number
:不區分整數與浮點數;
- 字符串:
- 布爾值:
- 相等運算符:
==
:會自動轉換數據類型再比較;
===
:不會自動轉換數據類型,數據類型不一致則返回false;
NaN
,表示Not a Number
與所有其他值都不相等,包括自己;
null
:表示一個空的值,與0和空字符串''
不同,0是一個數值,''
表示長度爲0的字符串,而null
表示"空";
undefined
:表示"未定義";
- 數組定義方式, 索引起始值爲0:
new Array(1, 2, 3)
;
- 直接使用
[]
, [1, 2, 4]
;
- 對象都是一組由鍵-值組成的無序集合,鍵都是字符串類型,如果鍵中含特殊字符,就必須用''括起來,訪問時用
['xxx']
方式,值可以是任意數據類型,獲取對象屬性方式:對象變量.屬性名;
- 多行字符串:用反引號`...`表示;
- 模版字符串:自動替換字符串中變量,
message = 'hello, ${name}, your age is ${age}'
;
- 字符串是不可變的,對字符串的某個索引賦值既不會引起錯誤,也不會改變字符串;
- 直接給
Array
的length
賦新值會導致Array
大小的變化,可以通過索引改變對應元素的值,索引超過範圍時同樣引起Array
大小的變化;
push()
向Array末尾添加若干元素,pop()
把最後一個元素刪除;
unshift()
向Array
頭部添加若干元素,shift()
刪除第一個元素;
splice()
:從指定索引開始刪除若干元素,然後再從該位置添加若干元素;
concat()
:將兩個Array連接起來,返回一個新的Array
,join()
將Array
的每個元素都用指定字符串連接起來,再返回連接後的字符串;
- 判斷一個屬性是否爲對象自身所有,而不是繼承得到,可用
hasOwnProperty()
方法;
JS
中把null
、undefined
、0
、NaN
和空字符串''視爲false
,其他都視爲true
;
Set
是一組key
的集合,不存儲value
,由於key
不能重複,所以Set
中沒有重複的key
,常用方法:add
、delete
;
Map
是一組鍵值對的結構,具有極快的查找速度,初始化時需要一個二維數組,或者直接初始化一個空Map
,常用方法:set
、has
、delete
、get
;
- 遍歷
Array
可用下標循環,遍歷Map
和Set
則無法使用下標,引入inerable
類型(Array
、Map
、Set
都屬於)通過for...of
循環來遍歷;
for...in
遍歷的是對象的屬性名稱,for...of
循環的是集合本身的元素,更好的方式是使用內置的forEach
方法,接受一個函數,每次迭代自動回調函數;
let
代替var
可以申明一個塊級作用域的變量;
- 對數組元素進行解析賦值時,多個變量要用
[...]
括起來,eg:let [x, [y, z]] = ['k', ['cunyu', 'chuzihang']]
;
- 指定函數的this指向哪個對象可用函數本身的
apply
方法,接受兩個參數,第一個是需要綁定的this變量,第二個是Array
,表示參數本身的參數;
apply()
把參數打包成Array
再傳入,call()
把參數順序傳入;
filter
用於把Array
的某些元素過濾調,然後返回剩下的元素;
- 自帶
sort
函數是按照ASCII
的大小比較的;
- 返回閉包時,返回函數不要引用任何循環變量或者後續會發生變化的變量;
- 箭頭函數,相當於匿名函數,含多個參數時,要用
()
括起來;