javascript-數據類型

3.1 數據類型

(1) 基本數據類型:string,number(flaot,精度17位小數,integer,Integer.MAX_VALUE獲取整形最大值),boolean,null,undefined, typeof後依次對應string number,boolean,object,undefined,存儲在內存中的棧裏,執行環境銷燬後基本類型的值銷燬
(2) 引用數據類型:包含數組、函數,{}, typeof後依次對應object,function,object

所以數組和普通對象通過typeof是區分不出來的,可以通過instanceof區分,但是instanceof會有全局侷限性,跨iframe的Array通過instanceod檢測類型會有問題,更安全的類型檢測時Object.prototype.toString().call(Arr),引用類型的引用指針是存儲在棧裏,而實際的對象值存儲在堆(可以動態申請大小)裏,一個堆可以對應多個指針棧,所以當所有的指針棧消失後對應的堆才被釋放
數組:Array 類型 ,
聲明方式
```
var a = new Array(aru); // aru可以是長度或者初始化參數或者沒有aru
var a = []; // 字面量形式
```
檢測方式:instanceof Array, isArray()
棧數組:通過push(),pop()方法模擬類似棧的數組;隊列數組:通過shift(),push();
排序方法:reverse(func(argue1, argue2)) // 倒置;sort() // 默認是升序,將每一項轉變爲字符串然後比較,自定義函數比較 如果返回負數那麼argue1 在argue2前,正數反之
操作方法:concat(arg1,arg2...),基本參數數組新建數組,然後添加剩餘參數到數組中;slice(start,end),截取部分數組,end默認值是數組末尾;splice(arg1,arg2,arg3..),如果arg1存在,arg2不爲0,arg3。。有值則是將arg3以及以後的元素進行替換,arg2爲0其餘條件不變則爲插入,arg2不爲0並且後面沒有其他的參數了(沒有arg3,,,)則爲刪除
迭代方法:reduce(func(prev, cur, index, Array){}),reduceRight(),一個是從左到右一個是從右到左,返回結果作爲下一個prev

(3) 類型轉化

1、其它類型轉Boolean,可以通過!!或者Boolean(),例如
```
!!1 // true
!!0 // false
Boolean('hello') // true
```
**注**:其它類型的值轉爲boolean時只有'',null,undefined,0,NaN是false,其餘一律是true

2、其它類型轉number,通過Number(),parseInt(),parseFloat()
```
Number(true) // 1 parseInt()同樣
Number(false) // 0 parseInt()同樣
Number(null) // 0 parseInt()同樣
Number(undefined) // NaN parseInt()同樣
Number('') // 0, 非浮點、數字、十六進制、空字符串的其他字符串轉化後是NaN
parseInt('') // NaN 字符串中開頭的除去空格字符如果不是數字或者負號就會返回NaN,數字後面的空格會被忽略
parseFloat('') // NaN 不同於parseInt的是第一個可以.
```
3、 其它類型轉string,通過value.toString(arg),其中arg表示進制,String(value)
```
true.toString(); // 'true' String(value) 一樣
1.toString(); // '1' String(value) 一樣
null.toString(); // 報錯
undefined.toString(); // 報錯
String(null) // 'null'
String(undefined) // 'undefined'
```
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章