JavaScript學習(1)——快速入門
1、資料型別
(1)Number,JavaScript不區分整數和浮點數,統一用Number表示
NaN; // NaN表示Not a Number,當無法計算結果時用NaN表示
Infinity; // Infinity表示無限大,當數值超過了JavaScript的Number所能表示的最大值時,就表示為Infinity
(2)布林值:true、false,&&、||、!
(3)比較運算子
雙等號:會自動轉換資料型別再比較
三等號:不會自動轉換資料型別,如果資料型別不一致,返回false
NaN
這個特殊的Number與所有其他值都不相等,包括它自己。唯一能判斷NaN
的方法是通過isNaN()
函式
比較兩個浮點數是否相等,只能計算它們之差的絕對值,看是否小於某個閾值
(4)null
表示一個空的值,而undefined
表示值未定義。undefined
僅僅在判斷函式引數是否傳遞的情況下有用
(5)陣列用“[]”
表示,元素之間用“,”
分隔;也可以通過Array()
函式建立。強烈建議前者
(6)物件:JavaScript的物件是一組由鍵-值組成的無序集合
2、變數
(1)變數名是大小寫英文、數字、$
和_
的組合,且不能用數字開頭,也不能是JavaScript的關鍵字
(2)申明一個變數用var
語句
(3)可以把任意資料型別賦值給變數,同一個變數可以反覆賦值,而且可以是不同型別的變數
3、strict模式
JavaScript在設計之初,為了方便初學者學習,並不強制要求用var
申明變數。這個設計錯誤帶來了嚴重的後果:如果一個變數沒有通過var
申明就被使用,那麼該變數就自動被申明為全域性變數
為了修補JavaScript這一嚴重設計缺陷,ECMA在後續規範中推出了strict模式,在strict模式下執行的JavaScript程式碼,強制通過var
啟用strict模式的方法是在JavaScript程式碼的第一行寫上:'use strict';(這是一個字串,不支援strict模式的瀏覽器會把它當做一個字串語句執行)
4、多行字串
由於多行字串用\n
寫起來比較費事,所以最新的ES6標準新增了一種多行字串的表示方法,用反引號 ` ... ` 表示
5、模板字串
如果有很多變數需要連線,用+
號就比較麻煩。ES6新增了一種模板字串,表示方法和上面的多行字串一樣,但是它會自動替換字串中的變數(`你好, ${name}, 你今年${age}歲了!`)
6、操作字串
字串是不可變的,如果對字串的某個索引賦值,不會有任何錯誤,但是,也沒有任何效果
7、陣列
(1)要取得Array
的長度,直接訪問length
屬性
(2)直接給Array
的length
賦一個新的值會導致Array
大小的變化
(3)如果通過索引賦值時,索引超過了範圍,同樣會引起Array
大小的變化
(4)不給slice()
傳遞任何引數,它就會從頭到尾擷取所有元素
(5)push()
向Array
的末尾新增若干元素,pop()
則把Array
的最後一個元素刪除掉
(6)如果要往Array
的頭部新增若干元素,使用unshift()
方法,shift()
方法則把Array
的第一個元素刪掉
(7)reverse()
把整個Array
的元素給掉個個兒,也就是反轉
(8)splice()
方法是修改Array
的“萬能方法”,它可以從指定的索引開始刪除若干元素,然後再從該位置新增若干元素
(9)concat()
方法把當前的Array
和另一個Array
連線起來,並返回一個新的Array;concat()
方法可以接收任意個元素和Array
,並且自動把Array
拆開,然後全部新增到新的Array
裡
(10)join()
方法把當前Array
的每個元素都用指定的字串連線起來,然後返回連線後的字串
8、物件
(1)由於JavaScript的物件是動態型別,你可以自由地給一個物件新增或刪除屬性:delete xiaoming.age
(2)檢測xiaoming
是否擁有某一屬性,可以用in
操作符:'name' in xiaoming。不過要小心,如果in
判斷一個屬性存在,這個屬性不一定是xiaoming
的,它可能是xiaoming
繼承得到的
(3)要判斷一個屬性是否是xiaoming
自身擁有的,而不是繼承得到的,可以用hasOwnProperty()
方法:xiaoming.hasOwnProperty('name')
9、條件判斷
(1)JavaScript把null
、undefined
、0
、NaN
和空字串''
視為false
,其他值一概視為true
10、Map
(1)
用JavaScript寫一個Map如下:var m = new Map([['Michael', 95], ['Bob', 75], ['Tracy', 85]]);
11、Set
(1)要建立一個Set
,需要提供一個Array
作為輸入,或者直接建立一個空Set
(2)
通過add(key)
方法可以新增元素到Set
中
(3)通過delete(key)
方法可以刪除元素
12、iterable
(1)Array
、Map
和Set
都屬於iterable
型別
(2)具有iterable
型別的集合可以通過新的for ... of
迴圈來遍歷(for ... in會有另外一些問題)
(3)更好的方式是直接使用iterable
內建的forEach
方法,它接收一個函式,每次迭代就自動回撥該函式(Array的回撥引數是元素、下標、Array本身,Set的回撥引數是元素、元素、Set本身,Map的回撥引數是value、key、Map本身)