前言
快應用是基於nodejs開發的,因此我們必須掌握JavaScript這門語言,接下來的博客中,我們就重點學習nodejs必須掌握的JavaScript基礎知識。
JavaScript基礎
類型
JavaScript類型可以分爲兩種:基本類型和複雜類型。
基本類型:number、boolean、string、null、undefined。
複雜類型:array、function、object。
訪問基本類型時訪問的是值,而訪問複雜類型訪問的是對值的引用。舉例:
//基本類型
var a = 1;
var b = a;
b = 2;
//輸出a的值爲1,b的值爲2
//複雜類型
var a = {'mm' ,'nn'};
var b = a;
b[0] = 'pp';
//輸出a[0]爲pp,b[0]也爲pp;
這個例子就說明覆雜類型中把一個對象賦值給另一個對象,這兩個對象指向的同一個地址,所以改動其中一個對象的值,另一個也會跟着改變。
注意:
因爲JavaScript中變量的聲明都是用var關鍵字,所以就不容易區分變量值的類型,這個時候就要用到typeof和instanceof兩個關鍵字了。
typeof :可以獲取一個變量的類型,返回值爲變量類型。
instanceof :與java關鍵字instanceof一樣,判斷一個變量是哪種類型,返回值爲boolean。
與Java類似的是,JavaScript裏面也有構造函數這一說法,比如string類型,下面就是創建字符串的兩種方式:
var a = 'abc';
var b = new String('abc');
//這兩個變量輸出的都是 abc
但是,如果你對a和b使用typeof關鍵字,會發現a是string ,而b卻是object,所以我們定義變量的時候儘量使用直觀的方式來定義,儘量不使用new。
另外,在if判斷中,除了false之外,null、undefined、' '、0這些都會被判斷爲false,比如:
var a = 0;
if(a){
//不會執行
}
函數
與java中的函數很類似,但是JavaScript中函數是需要關鍵字 function,如下:
function funA(arg0, arg1, ... argN) {
//函數體
}
注意:
1、函數參數不需要聲明類型,只寫形參的名稱就可以了。
2、聲明時不需要指定返回值類型,return可以有,也可以沒有。
3、javascript中的函數沒有重載的形式,後定義的函數會直接覆蓋前面的函數。
4、一個函數可以接收任意個參數。
上面第三點舉例:
function funA(){
alert("11");
};
function funA('aa','bb'){
alert("22");
};
調用funA(); 結果輸出 11 。總結
這裏總結一下函數的特點:
1、使用function關鍵字定義函數。
2、沒有任何的返回值類型。
3、函數的定義優先執行,與順序無關。
4、可以通過函數名賦值函數,函數變量的類型是function對象。
5、參數列表不能有var關鍵字。
6、函數的參數列表在具體調用的時候實參個數可以和形參個數不同。
7、JavaScript函數天然的支持可變參數。
8、同名的函數最後聲明會覆蓋前面以聲明。Javascript中沒有函數重載。