一、js數據類型分類以及判斷方法:
js有6種數據類型:
- number
- string
- boolean
- function
- object
- undefined
數據類型判斷:
- typeof 操作符
使用 typeof 操作符來查看 JavaScript 變量的數據類型。typeof 返回值有六種可能: "number," "string," "boolean," "object," "function," 和 "undefined."
請注意:
- NaN 的數據類型是 number
- 日期對象Date()、數組對象Array()和null 使用typeof輸出后均為object,因此就無法通過 typeof 來判斷他們的類型
- 未定義變量的數據類型為 undefined
實例:
typeof "John" // 返回 string
typeof 3.14 // 返回 number
typeof NaN // 返回 number
typeof false // 返回 boolean
typeof [1,2,3,4] // 返回 object
typeof {name:'John', age:34} // 返回 object
typeof new Date() // 返回 object
typeof function () {} // 返回 function
typeof myCar // 返回 undefined (如果 myCar 沒有聲明)
typeof null
2、constructor屬性
constructor 屬性返回所有 JavaScript 變量的構造函數。可以用它來彌補typeof不能區分Array和Data類型的缺陷
你可以使用 constructor 屬性來查看對象是否為數組 (包含字符串 "Array"):
return myArray.constructor.toString().indexOf("Array") > -1;
}
你可以使用 constructor 屬性來查看對象是否為日期 (包含字符串 "Date"):
return myDate.constructor.toString().indexOf("Date") > -1;
}
1、顯式轉化(強制類型轉換)
1)全局方法:Number() 轉換為數字, String() 轉換為字符串, Boolean() 轉化為布爾值。(parseInt 和 parseFloat也算) 2) toString()方法:
Date/Number/Boolean對象中均有對應的 toString()方法 可以將相應對象轉化為字符串
例如:
obj.toString() // 返回 Thu Jul 17 2014 15:38:19 GMT+0200 (W. Europe Daylight Time)
3)Date對象中的getTime()方法可以將Date轉化為Number
4)一元運算符“+”可以將 字符串對象/日期對象/布爾對象轉化為數字
2、隱式類型轉化
1)算數運算符會產生隱式類型轉化
● “+” 運算符
Boolean、Number、String三者任意兩種數據相加,轉化優先順序為:String>Number>Boolean·
(如果加號兩邊都是字符串類型,則只是簡單的字符串拼接(數組也一樣);如果只有"+"右邊有數據即類似 +”11“時,所有的數據類型都要轉化為Number類型(數組先轉字符串,再轉數字)) 函數function與參與運算會先轉化為字符串再運算
●“-”、“*”、“/”、%運算符
使用減號、乘號、除號、取余運算符運算時,都是將兩邊的數據先轉化為Number,然后再進行運算
ps:"+"和"-"運算符前面不一定有數據(例如寫成:+“11”也可以),但是"*"、"/"、"%"運算符,運算符兩邊必須都有數據才行,否則報錯
2)邏輯運算符
●邏輯運算符"&&"、"||"、"!",會將數據轉化為Boolean類型
"!"取反運算符會想將數據 轉化為boolean類型,然后再取反; eg: var a = ' '; console.log( !a) ====> true
分析:1)先將a轉化為布爾類型,Boolean(a)===>false;2)取反 ==>true
"&&" 並運算符:從左到右對&&兩側的變量進行布爾判斷,返回第一個布爾值為false的元素,如果不是布爾類型則進行 boolean類型的隱式判斷。(如果遇到這樣的元素,后面的元素就不會執行了!),如果沒有布爾值為false的元素,則返回最后一個元素!記住:是返回這個元素而不是隱式boolean類型判斷后的布爾值!!
eg:1、1 && 0 ==> 0
2、2 && a &&false ==> 報錯:a沒有被定義;
3、2 && false && a ==>false,不報錯 因為遇到了false,就返回false,后面的a就不會被判斷了,所以及時a沒有被定義也不會報錯
"||" 或運算符 的判斷和&&差不多,返回第一個boolean值為true的元素!如果沒有則返回最后一個元素
3) "==" 相等性判斷符號 會隱式調用Number() 方法 1=="1" ===>true
-


