JavaScript類型與函數(shù)解析
快應用是基于nodejs開發(fā)的,因此我們必須掌握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關鍵字,所以就不容易區(qū)分變量值的類型,這個時候就要用到typeof和instanceof兩個關鍵字了。
typeof :可以獲取一個變量的類型,返回值為變量類型。
instanceof :與java關鍵字instanceof一樣,判斷一個變量是哪種類型,返回值為boolean。
與Java類似的是,JavaScript里面也有構造函數(shù)這一說法,比如string類型,下面就是創(chuàng)建字符串的兩種方式:
var a = 'abc';
var b = newString('abc');
//這兩個變量輸出的都是 abc
但是,如果你對a和b使用typeof關鍵字,會發(fā)現(xiàn)a是string ,而b卻是object,所以我們定義變量的時候盡量使用直觀的方式來定義,盡量不使用new。
另外,在if判斷中,除了false之外,null、undefined、' '、0這些都會被判斷為false,比如:
var a = 0;
if(a){
????//不會執(zhí)行
}
函數(shù)
與java中的函數(shù)很類似,但是JavaScript中函數(shù)是需要關鍵字 function,如下:
function funA(arg0, arg1, ... argN) {
????//函數(shù)體
}
注意:
1、函數(shù)參數(shù)不需要聲明類型,只寫形參的名稱就可以了。
2、聲明時不需要指定返回值類型,return可以有,也可以沒有。
3、javascript中的函數(shù)沒有重載的形式,后定義的函數(shù)會直接覆蓋前面的函數(shù)。
4、一個函數(shù)可以接收任意個參數(shù)。
上面第三點舉例:
function funA(){
????alert("11");
};
function funA('aa','bb'){
????alert("22");
};
調用funA(); 結果輸出 11 。
總結
這里總結一下函數(shù)的特點:
1、使用function關鍵字定義函數(shù)。
2、沒有任何的返回值類型。
3、函數(shù)的定義優(yōu)先執(zhí)行,與順序無關。
4、可以通過函數(shù)名賦值函數(shù),函數(shù)變量的類型是function對象。
5、參數(shù)列表不能有var關鍵字。
6、函數(shù)的參數(shù)列表在具體調用的時候實參個數(shù)可以和形參個數(shù)不同。
7、JavaScript函數(shù)天然的支持可變參數(shù)。
8、同名的函數(shù)最后聲明會覆蓋前面以聲明。Javascript中沒有函數(shù)重載。
作者:諾朗