js資料型別
一、資料型別
(一)基本資料型別
1、數值型別
大致可以看成兩類(整數型別和浮點型別)、(nan非數字型別)
注意:infinity、-infinity與其他數值進行算術運算時,整個算術表示式將變成特殊值nan。
infinity、-infinity可以進行比較運算,兩個infinity總是相等的,兩個-infinity也相等。
注意:js內部所有數以64位浮點數形式儲存(所以涉及小數的比較與運算要小心),浮點數用二進位制表達時是無窮的(即浮點數不是精確的值),所以0.1+0.2=0.3 false
注意:js允許除數為零,當除數與被除數都為0時,值為nan。正數除以0為infinity,負數除
以0為-infinity。
判斷乙個數是否為nan: isnan() 用於判斷某個數值型變數是否為非數,若引數不是數值型會先轉換,而es6方法number.isnan()只對數值型有效,不進行型別轉換,可準確判斷是否nan。
2、字串型別(無字元型別)
用單引號或者雙引號括起來
注意:如果在字串中使用特殊字元(如單引號、雙引號。空格等),必須使用轉義字元
3、布林型別
布林型別的值只有兩個true和false
4、undefine的型別
undefine的型別的值只有乙個undefined,表示該變數不存在或者沒有賦值
注意:任何數與undefined運算為nan
5、null型別
注意:typeof判斷型別時為object 可以給變數賦值為null解除占用
注意:null==undefined true ===嚴格相等判斷時為false
6、symbol資料型別
注意:不是建構函式,不可用new生成,直接symbol(),表示獨一無二的值,可接受乙個字串作為引數,即使引數同,相互間也不相等
注意:當想要同乙個symbol值時,用到知識點symbol.for() 它接受乙個字串作為引數,然後搜尋有沒有以該引數作為描述的 symbol 值。如果有,就返回這個 symbol 值,否則就新建並返回乙個以引數為描述的 symbol 值
symbol.keyfor() 返回乙個已登記的symbol型別值的key(即描述)
(二)複雜資料型別
3大引用型別object 、 array 、function
二、判斷資料型別的方法
1、typeof只可以檢測number,string,boolean,object,function,undefined。
弊端:null與array檢測不了,都會判斷為object,其他可以正確判斷
補充判斷是不是陣列的方法:arr instanceof array
arr.constructor=array
array.isarray(arr) 有相容性問題
object.prototype.tostring.call(arr)=』[object array]』
注意:es5中typeof是保險操作,因為即使沒有宣告,也為undefined 但es6 typeof不是乙個百分百安全操作,因為存在暫時性死區(let const命令宣告的變數沒有變數提公升,只要在宣告前使用就會報錯)
2、instanceof 檢測某個物件是不是另外乙個物件的例項,只能用來判斷物件和函式,不能用來判斷字串和數字
例如 arr instanceof array 檢測arr是不是內建類array的例項
3、constructor 指向對應的建構函式
4、object.prototype.tostring.call 判斷某個物件值屬於哪種內建型別
let date = new date;
console.log(object.prototype.tostring.call(date));//[object date]
let re = 『//』;
console.log(object.prototype.tostring.call(re));//[object string]
let pz = [8,6,4];
console.log(object.prototype.tostring.call(sz));//[object array]
let mms = function(){};
console.log(object.prototype.tostring.call(hs));//[object function]
三、型別間的轉換
1、轉為字串
1)string(參) 此方法可將其他所有型別轉為字串型別
2)參.tostring() 注意不可轉null與undefined型別
3)隱式轉換:在進行+運算時,若乙個是字串型別,乙個為其他型別則會將其他型別轉為字串型別在進行拼接
2、轉為數值型別
1) number()
純數字的字串轉換後為數字,非純數字的字串為nan,""空字串轉後為0
布林型別true轉後為1 ,布林型別false轉後為0
undefined轉換後為nan
null轉換後為0
空陣列轉換後為0,其他nan
object轉後為nan
function轉後為nan
2) parseint() 不識別小數
若字串首字元為數字則遇非數字結束。若首字元非數字則為nan
布林型別true轉後為nan ,布林型別false轉後為nan
undefined轉換後為nan
null轉換後為nan
空陣列轉換後為nan,非空陣列遇逗號結束,若第乙個陣列值就不是數字則nan
object轉後為nan
function轉後為nan
3)parsefloat() 同parseint()但識別第乙個小數點
3、轉為布林型別
boolean() 數字0、"「」空字串、null、undefined、nan轉換後為false,其他true
.
js資料型別判斷方法
js的資料型別大體上可以分為兩種 原始型別 即基本資料型別 和物件型別 即引用資料型別 而基本資料型別細化可以分為undefined null number boolean string 而js的引用資料型別也就是物件型別object,比如 object array function data等 f...
js資料型別及判斷資料型別
1.null 2.undefined 3.boolean 4.number 5.string 6.引用型別 object array function 7.symbol typeof null object typeof undefined undefined typeof true false b...
判斷JS資料型別的方法
js是弱語言,其資料型別可以自動轉換,因此很多時候在用到資料的時刻不清楚資料的型別到底是哪種,需要進行判斷後,再執行語句。最新的ecmascript規範定義的資料型別分為兩大類,分別為基本型別和引用型別。對於資料型別的判斷,有如下的方法 tostring 方法 tostring 方法是object原...