1. 數據類型
(5個基本數據類型)number string Boolean undefined null 和一個引用類型 objectjavascript
2. 判斷類型(typeof)html
7種:number string Boolean undefined object function symbol https://www.cnblogs.com/sker/p/5474591.htmljava
3. 類型轉換函數
(1)強制轉換測試
var test = parseInt(「blue」); //returns NaN var test = parseInt(「1234blue」); //returns 1234 var test = parseInt(「22.5」); //returns 22 var test = parseFloat(「1234blue」); //returns 1234 var test = parseFloat(「22.5」); //returns 22.5
(2)隱式轉換(隱式轉換一般發生在運算符加減乘除,等於,還有小於,大於。。。)spa
console.log(10+'20') //2010 console.log(10-'20')//-10 number console.log(10-'one') //NaN not a number console.log(10-'101a') //NaN console.log(10*'20') //200 number console.log('10'*'20') //200 number console.log(20/'10') //2 number console.log('20'/'10') //2 number console.log('20'/'one') //NaN
==
:等同,比較運算符,兩邊值類型不一樣的時候,先進行類型轉換,再比較;prototype
===
:恆等,嚴格比較運算符,不作類型轉換,類型不一樣就是不等;code
Object.is()
是ES6新增的用來比較兩個值是否嚴格相等的方法,與===
的行爲基本一致。regexp
Object.is()
,其行爲與===
基本一致,不過有兩處不一樣:htm
+0 === -0 //true NaN === NaN // false Object.is(+0, -0) // false Object.is(NaN, NaN) // true
什麼時候使用==、===: 用 if(obj.a==null) 代替 obj.a===null || obj.a===undefined,其餘狀況用===。
關於== :
字符串和數字比較時,字符串轉數字
數字與布爾比較時,布爾轉數字(一、0)
字符串和布爾比較時,二者轉數字
console.log(undefined==null) //true console.log('0'==0) //true 字符串轉數字 console.log(0==false) //true 布爾轉數字 console.log('0'==false) //2個都轉成數字 console.log(null==false) //false console.log(undefined==false)//false
關於===:
類型不一樣:false
類型相同:NaN不等於NaN
new Object 不等於 new Object
4. 類型檢測
typeof 不管引用的是什麼類型的對象,它都返回 「object」。
這就須要用到instanceof來檢測某個對象是否是另外一個對象的實例。
instanceof
運算符用來測試一個對象在其原型鏈中是否存在一個構造函數的 prototype
屬性。
語法:object instanceof constructor
參數:object(
要檢測的對象.)constructor(
某個構造函數)
5. 封裝函數實現類型判斷
function type (obj) { var cache = { '[object Number]': 'number', '[object Array]' : 'array', '[object Object]' : 'object', '[object String]' : 'string', '[object Boolean]' : 'boolean', '[object Null]' : 'null', '[object Undefined]' : 'undefined', '[object Function]' : 'function', '[object RegExp]' : 'regexp' } return cache[Object.prototype.toString.call(obj)]; }
6. 內置函數(數據封裝類對象)
Number String Boolean Object Array Function Date RegExp Error