JavaScript基礎知識(資料型別,迴圈判斷,集合)
JavaScript中允許對任何資料進行比較,例如
false == 0 //true
false === 0 ///false
NaN函式:
有一個特殊的值NaN,這個特殊的number值與其他的值都不相等,包括與自身
NaN == NaN // false
唯一能判斷NaN的只有isNaN( )函式。
浮點數比較:
1/3 ==(1-2/3) // false
浮點數在運算過程中會出現誤差,因為計算機無法精確表示無限迴圈小數。要計算兩個小數是否相等,只能計算它們之差的絕對值,是否小於某個閾值。
null、‘ ’、0及undefined:
null為‘空’的值,‘ ’一個長度為0的字串,0為一個數值。
陣列:
JavaScript的陣列可以包含任意資料型別。[1 , 2 , 4 , 'nice' , null , true]
另一種建立陣列的方式通過Array( )實現
變數:
在JavaScript中,同一個變數可以被反覆賦值,且可以是不同型別的資料(這就是動態語言),但var宣告只能有一次
var a = 12;
a = ‘AB’;
console.log(x);
要顯示變數的內容,可以用console.log(x),開啟瀏覽器控制檯就可以看到結果了。使用console.log( ),而不用alert( )的好處在於可以避免煩人的提示框。
注意: a = 1;
當一個變數沒有通過var,而直接宣告的時候,它就會自動被宣告為全域性變數。為了修復這一缺陷,推出了strict模式,在JavaScript的第一行寫上“use strict”,注意有些瀏覽器不支援strict模式。
字串:
需要注意的是,字串是不可變的,如果對字串的某個索引賦值,不會有任何錯誤,但是,也沒有任何效果。
var s = 'nice'
s[0] = m
alert(s) //s仍為nice
字串常用的幾個方法,toUpperCase,toLowerCase,indexOf(搜尋指定字串出現的位置,沒有返回-1),substring(返回指定索引區間的子串)
陣列:
JavaScript的array可以包含任意資料型別,並通過索引來訪問每個元素,通過length可以獲得array的長度。注意:
陣列的常用方法,indexOf , slice(對應substring),push和pop,push用於向array末尾新增元素,pop用於刪除最後一個元素。unshift和shift,unshift用於向頭部新增元素,shift用於刪除array的第一個元素。sort函式用於對array進行排序。reverse函式反轉整個array元素順序。splice從指定索引位置刪除若干元素,再從該位置新增若干元素。concat用於連線兩個array,並返回一個新的array,該方法可以接受任意個元素和array。
var arr = ['A','B']
arr.concat(1,3,[4,6]) //['A','B',1,3,4,6]
join函式,將array中的每個元素按照指定的字串連線起來,並返回一個字串。如果array有元素不為字串,將自動轉換為字串後再連線。
物件:
JavaScript物件由一組無序的集合資料型別表示,一般都可以通過Obj.name的形式來訪問屬性,但當屬性名中出現特殊字串時,應當使用Obj['name']的方法訪問。
var student = {
name: jack,
'middle-school': 'No.1 middle school'
}
student['middle-school'] // No.1 middle school
因此,屬性名儘量使用標準的變數名,這樣就可以通過Obj.prop的形式來訪問。另外,當訪問一個不存在屬性時,不會報錯,只會返回undefined。
in方法,可以使用該方法判斷物件是否擁有這一屬性,但判斷時也需注意,這一方法有可能是繼承得到的。例如,‘toString’ in student // true,所有物件都有toString方法,因此可以用hasOwnProperty方法。
條件判斷:
javasJavaScript判斷語句中將null,0,undefined,‘ ’及NaN,一致視為false。
迴圈:
JavaScript用兩種迴圈,for迴圈(初始條件,結束條件,遞增條件)來執行迴圈語句塊。for迴圈最常用的是利用索引來遍歷陣列。while迴圈與do...while迴圈。
var arr = [1,2,4,6,7,9]
var i ,x
for (i = 0,i< = arr.length,i++){
x = arr[i];
console.log(x);
}
for ... in 迴圈,可以把一個物件的屬性依次迴圈出來。for (var key in Obj){...},另外一個用法就是,array物件中每個元素的索引可以被視為物件的屬性,因此可以用for...in直接迴圈出array的索引。
arr = [1,2,3]
for(var i in arr){
console.log(i);
console.log(arr[i]); // 1,2,3
}
Map與Set:
Map的方法有get,set,has。對同一個key多次set值的時候,會更新它的value。
JavaScript的Set很特殊,只能儲存key,不能儲存value,裡面的key不能重複。方法為add(key),delete(key)。Set與array類似,但Set沒有索引。
Iterable:
Array,Map,Set都屬於Iterable型別,由於for...in迴圈的缺陷性,故遍歷集合最好的方法是forEach( ),使用前需要判斷瀏覽器是否支援。forEach的回撥函式會返回這些內容。當不需要返回某些引數時,也可以不寫。
var map = new Map([[1,'x'],[2,'y'],[3,'z']])
map.forEach(function(value,key,map)){ //針對map的寫法
...//value,key,map
}
map.forEach(function(element,index,array)){ //針對array的寫法
...//element,index,array
}
map.forEach(function(element,sameElement,set)){ //針對set的寫法
...//element,index,array
}