Javascript是一種弱類型語言,沒有明確的類型分類;網上分類的方式比較多,我的感受不比去特別的追究細分是什麼什麼類型,如果可以明確的分出類型的話,javascript就不是弱類型語言,又因爲你們所使用的主體語言概念不徹底相同(像C#,PHP,C語言等),分類的時候就會根絕本身的主體語言的習慣來分類,不管怎樣分類只要有助於本身的理解,可以方便,正確靈活的使用就能夠了;下面是兩是種常見的分類方式和一些必須瞭解的基礎用法知識;javascript
1、第一種分類方式,也是比較常見的一種分類方法:java
分爲9種類型:分別是Undefined,Boolean,Object,Number,Null,String,Reference,List,Completion,其中Reference,List,Completion三種類型僅共語言解析運行時使用,沒法從程序中直接訪問;下面一一介紹;函數
一、Undefined 類型:是全局對象window的一個特殊屬性,顧名思義就是未定義的意思;Undefined類型只有一個值Undefined,表示一個變量定義了但未賦值;spa
如:var a; alert(a); // 彈出undefined;code
下面是幾種常見的會出現undefined的狀況:對象
(1)獲取一個對象的屬性(本來屬性和protoType擴展的屬性)不存在時,返回undefined;blog
(2)當一個函數function(){}沒有明確的返回值時,顯示undefined,例子:function way(){} alert(way());//彈出undefined;ip
(3)javascript中的參數有多個形參的話,若果調用參數的話,參數數量小於形參數量,那麼其餘的參數值就爲undefined;ci
二、Null類型:null是javascript保留的關鍵字,null類型也只有一個null值,表示爲空或者不存在的對象引用;字符串
(1)javascript中的if()判斷語句不管是null類型仍是undefined類型他們的返回值都是false,也就是說一個變量如果null 或者undefined那麼他就爲false;
if (null){ alert("sdf");//進入不了 } if (undefined){ alert("sdfsdf");//進入不了 } var a=12; if (a){ alert("sdf"); //能進入 }
三、Number類型:表示數值,包含了全部的數值類型,不像高級語言那麼細分紅int,double,deciable,他的取值範圍是:1.7976931348623157E+308到-1.7976931348623157E+308之間,就是1.7976931348623157*10的308次方到-1.7976931348623157*10的308次方之間;Number類型有一個特殊的值NaN,他是Number類型中一個非數值的值,就像無窮大,因此NaN不等於NaN;
四、Object類型:用來表示一個對象,像String, Array,new 一個對象等,當這個對象爲空時,就是null了;因此alert( typeof(null))的彈出值爲object;
五、String類型:string類型是javascript中的一個比較重要的類型,它用來表示一個字符串,咱們在寫腳本的時候須要處理不少的字符串,因此javascript庫中也提供了不少字符串處理方法,網上已有不少資料了,這裏就不一一細說了;
六、Boolean類型:布爾類型你們都很熟悉,這裏說幾個他的特殊用法:(1)boolea類型和Number類型相結合時,true轉化爲1,false轉化爲0;
var a = true; alert(a+1);//彈出2 var a = true; alert(a);//彈出true
上述六種類型也能夠相互轉化,基本上是數值和字符串和布爾值之間的轉化:
(1) Number類型轉化爲string類型,用tostring();
(2) String類型轉化爲Number,用Number();
var str = "123"; var num = 1; alert(str + num);//彈出1231 alert(Number(str)+num) //彈出124
也可使用全局函數parseInt()和parseFloat()來進行轉換;parseInt()和parseFloat()的區別是Number()轉換是整個值,而parseInt()和parseFloat()則能夠只轉換開頭的數字部分。
alert(Number("123asdf"));//彈出NaN alert(Number("1.2.3"))//彈出NaN alert(parseInt("123sdf"));//彈出123 alert(parseFloat("sdfsdf"));//彈出NaN alert(parseInt("sdf345"))//彈出NaN
Number()在轉化的過程當中布爾類型的true和false分別被轉化爲1和0其餘的不能轉化爲數值的所有轉化NaN。
alert(Number(true));//彈出1 alert(Number(false));//彈出0 alert(Number(null));//彈出0
其餘的如果不能轉化爲數值類型的,基本上全轉化爲NaN;
擴展小知識:(1)判斷一個變量是不是數值,用IsNan()方法;
(2)在javascript中==和===的區別: "==" 只要求值相等; "===" 要求值和類型都相等;
(3)instanceof只是用於判斷object是不是class類的一個實例,是的話返回true,不然返回false;alert(a instanceof String);
2、第二種分類方法:用typeof()關鍵字來分類,能夠分爲:undefined,number,string,boolean,object,function
類型 |
例子 |
運行結果 |
Undefined |
var a1; alert(typeof(a1)); function way{} alert(way()); alert(typeof(way())) |
undefined |
number |
Var num1=12; alert(typeof(num1)); |
number |
string |
Var num2=」12」; alert(typeof(num2)); |
string |
boolean |
Var flag=true; alert(typeof(flag)); |
boolean |
object |
Var str=new string(); alert(typeof(str)); Var a=null; alert(typeof(a)); |
object |
function |
alert(typeof(String)); |
function |