<!----><!----> <!---->
眾所周知, js 是弱類型語言。定義任何類型的變量都用 var 關鍵字,如果只是聲明變量,卻沒有給其賦值。那么誰也不知道這個變量是啥類型的。
如下:
var abc;//定義一個變量abc,卻沒有給其賦值
Java 中卻不同,定義一個變量后,馬上就知道了變量的類型和變量所占的內存大小。看似沒給 abc 賦值,實際上 java 會給其一個默認值(這裡是 0 ),當然 abc 定義在一個方法中沒有賦值的話編譯是通不過的。
<!----><!----> <!---->如下:
int abc;//定義一個整數型變量abc,占4個字節
好了,回到主題。 Js 中檢測類型用 typeof ,對于內置類型,這是最常見的
alert(typeof 3);//輸出”number” alert(typeof “hello”);//輸出”string” alert(typeof false);//輸出”boolean” alert(typeof undefined);//輸出”undefined”,這也是基本類型之一 alert(typeof null);//輸出”object”,沒有輸出”null”,據說是js實現時的一個錯誤
對於對象,數組用 typeof ,輸出的都是 ”object”
function User(name) {//定義一個類 this.name = name; } var u1 = new User(“jack”);//創建一個對象 alert(typeof u1);//輸出”object” var ary = [1,3,5];//定義一個數組 alert(typeof ary); //輸出”object”
那么怎么能區分出是某個具體類型的對象,可以用 對象的 construtor屬性
alert(u1. constructor == User);//輸出true alert(ary. constructor == User);//輸出false alert(ary. constructor == Array);//輸出true
Js 提供了 instanceof 運算符來檢測某個對象屬於某個具體的類型,實際上它也是使用對象的 constructor
alert(u1 instanceof User);//true alert(u1 instanceof Array);//false
補充:
function fun() {//js還有一個特殊對象--函數 } alert(typeof fun);//輸出function,而非object