1. 程式人生 > >JavaScript基礎知識(資料型別,迴圈判斷,集合)

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的長度。注意:

直接給length賦值會導致陣列的改變。同時給索引賦值,會導致陣列的更新。如果索引超出了範圍,同樣會引起array的變化,中間沒有被定義的會顯示undefined。

    陣列的常用方法,indexOf , slice(對應substring),pushpoppush用於向array末尾新增元素,pop用於刪除最後一個元素。unshiftshift,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
}