javascript資料型別判斷及資料隱式和顯示轉換
阿新 • • 發佈:2020-07-15
資料型別判斷
資料型別有 number string boolean null undefined function object 這些,那如何去判斷資料對應的是哪種型別呢
typeof可以判斷對應資料型別 寫法: typeof data 或者 typeof(data) , 一般習慣寫後面這種
返回值有 number string boolean object undefined function 這些
程式碼如下:
console.log(typeof(123)) //number console.log(typeof('true')) //string console.log(typeof(true)) //boolean console.log(typeof(null)) //object console.log(typeof(undefined)) //undefined console.log(typeof({})) //object console.log(typeof([])) //object console.log(typeof(NaN)) //number console.log(typeof(function(){})) //function console.log(typeof(a)) //undefined a未定義也不會報錯
其中對於陣列和物件無法區分,可以用 instanceof 去判斷
console.log([] instanceof Array) // true console.log({} instanceof Array) // false
如果只用其中一種方法就可以判斷,則需要通過 toString() 方法,對 物件原型呼叫 toString()方法,通過改變this指向來獲得對應的型別,如下
console.log(Object.prototype.toString.call('123')) //[object String] console.log(Object.prototype.toString.call({})) //[object Object] console.log(Object.prototype.toString.call([])) //[object Array] console.log(Object.prototype.toString.call(123)) //[object Number] console.log(Object.prototype.toString.call(true)) //[object Boolean] console.log(Object.prototype.toString.call(null)) //[object Null]
但是對undefined型別會報錯,所以undefined型別只有在typeof方法中才不會報錯
資料顯示轉換
顯示轉換number, number轉換有Number() parseInt() parseFloat() 方法
console.log(Number('123')); //123 console.log(Number(true)); //1 console.log(Number(false)); //0 console.log(Number(NaN)); //NaN console.log(Number('abc')); //NaN console.log(Number(undefined)); //NaN console.log(parseInt('123abc')) //123 只為變成整形,只看數字位,直到非數字位就截斷 console.log(parseInt('abc')) //NaN console.log(parseInt(true)) //NaN console.log(parseInt(10, 16)) //16 表示10為基底,這是16進位制,轉為10進位制 console.log(parseFloat('100.2')) //100.2 只為轉換為浮點型 console.log(parseFloat('100.2abc')) //100.2 console.log(parseFloat('100.2.3')) //100.2
其它
String() 顯示轉換字串
Boolean() 顯示轉換布林值
toSting() 轉換字串 undefined和null不能用toString()
var a = 10 console.log(a.toString()) //123 console.log(a.toString(2)) //1010 表示以a為基底,轉為2進位制 console.log(a.toString(16)) //a 表示以a為基底,轉為16進位制
資料隱式轉換
// isNaN() console.log(isNaN(123)) //false console.log(isNaN('123')) //false console.log(isNaN('abc')) //true 先隱式轉換成Number型別 // + - / % * console.log(+'123') //123 number型別 console.log(false < 1) //true console.log(2 < 1 < 3) //true 2 < 1為false flase < 3為true console.log(2 < 3 < 1) //false 2 < 3為true true < 1為false console.log(undefined < 0) //false console.log(undefined > 0) //false console.log(undefined == 0) //false console.log(null < 0) //false console.log(null > 0) //false console.log(null == 0) //false console.log(undefined == null) //true
不發生隱式轉換
// === 全等 !== 全不等 console.log('123' === 123) //false
end !!!