1. 程式人生 > >JavaScript學習(1)——快速入門

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)直接給Arraylength賦一個新的值會導致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的每個元素都用指定的字串連線起來,然後返回連線後的字串

https://www.liaoxuefeng.com/wiki/001434446689867b27157e896e74d51a89c25cc8b43bdb3000/00143449921138898cdeb7fc2214dc08c6c67827758cd2f000

 

8、物件

(1)由於JavaScript的物件是動態型別,你可以自由地給一個物件新增或刪除屬性:delete xiaoming.age

(2)檢測xiaoming是否擁有某一屬性,可以用in操作符:'name' in xiaoming。不過要小心,如果in判斷一個屬性存在,這個屬性不一定是xiaoming的,它可能是xiaoming繼承得到的

(3)要判斷一個屬性是否是xiaoming自身擁有的,而不是繼承得到的,可以用hasOwnProperty()方法:xiaoming.hasOwnProperty('name')

https://www.liaoxuefeng.com/wiki/001434446689867b27157e896e74d51a89c25cc8b43bdb3000/00143449922400335c44d4b8c904ff29a78fd4334347131000

 

9、條件判斷

(1)JavaScript把nullundefined0NaN和空字串''視為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)方法可以刪除元素

https://www.liaoxuefeng.com/wiki/001434446689867b27157e896e74d51a89c25cc8b43bdb3000/0014345007434430758e3ac6e1b44b1865178e7aff9082e000

 

12、iterable

(1)ArrayMapSet都屬於iterable型別

(2)具有iterable型別的集合可以通過新的for ... of迴圈來遍歷(for ... in會有另外一些問題)

(3)更好的方式是直接使用iterable內建的forEach方法,它接收一個函式,每次迭代就自動回撥該函式(Array的回撥引數是元素、下標、Array本身,Set的回撥引數是元素、元素、Set本身,Map的回撥引數是value、key、Map本身)

https://www.liaoxuefeng.com/wiki/001434446689867b27157e896e74d51a89c25cc8b43bdb3000/00143450082788640f82a480be8481a8ce8272951a40970000