JS的數據類型


一、前言:

  JavaScript中變量似乎很簡單,因為它聲明變量只需要一個“var”就可以,不像其他編程語言嚴格區分了數據類型(int/double/char/boolean...)。這樣做也是有好處的,變量可以被賦予任何類型的值,同樣也可以給這個變量重新賦予不同類型的值。並不是“一定終身”。

  

  可是,JavaScript並沒有避開數據類型,只是在聲明時統一使用無類型(untyped)的“var”關鍵字而已,它的數據類型是根據所賦值的類型來確定的。

var x = 1;        //number類型
var x = 0.1;     //number類型,JS不區分整數值和浮點數值

var x = "hello world"; //由雙引號內文本構成字符串
var x = 'javascript';   //單引號內文本同樣可以構成字符串

var x = true;    //true和false作為布爾值

var x = null; var x = undefined;  //null和undefined很相似,是特殊的類型

 

二、正文:

  下面對不同的數據類型進行說明

數據類型分類 說明 詳細分類

原始類型
  • 原始值不可更改
  • 原始值的比較也是值的比較

比如:var a = 1,  b = 1;

   a == b;   //true

數字(number)
字符串(string)
布爾值(boolean)
null
undefined
對象類型
  • 對象是可變的,即值是可以修改的
  • 對象的比較並非值得比較

比如:var a = [], b = [];

     a == b;   //false,只有在引用相同時,兩個只才會相等

特殊對象--數組(array)
特殊對象--函數(function)
object類型

 

1.“==”和“===”,即相等和全等

類型 例子  
相等(“==”) false == 0 使用相等(“==”)符號時,會自動轉換符號兩邊的數據類型再進行比較,容易出錯。
全等(“===”) false === 0 使用全等符號時,不會自動轉換數據類型,所有該符號也對數據類型進行了比較。

 

false == 0        //true
false === 0    //false

 

2.null和undefined的區別

undefined表示系統級的、出乎意料的或類似錯誤的值的空缺;表示缺少值,此處應該有值,但沒有定義。例如:var a;  a就會顯示undefined

null表示程序級的、正常的或在意料之中的值的空缺; 一般多使用null。

undefined null
0
-0 NaN ""  //空字符串

以上這些值在布爾值轉換中,會轉換成false。但是這並不足以讓你認為他們與false是相等的:  

undefined == true   //false
undefined == false  //false
 undefined == null    //true
undefined === null  //false

null ==  false          //false
null == true            //false

"" == false              //true
"" == true               //false

0 == false               //true
0 == true                //false
-0 == false              //true
-0 == true               //false
 NaN == false           //false
NaN == true            //false
NaN == NaN            //false NaN與任何值都不相等,包括它自身

 

3.Infinity和NaN

類型 相同點 例子 說明
Infinity 都是Number類型 2/0 表示無限大,超過JS的number所能夠表示的最大值。
NaN 0/0 表示not a number,無法計算的結果。

 

//NaN是一個特殊的number,與其他所有值都不相等,包括它自身 NaN === NaN        //false

//唯一識別NaN的方法 isNaN(NaN) //true

 

4.JS的typeof的用法,可以把數據類型當作字符串返回

  1 2 3 4 5 6
typeof的運算參數: 數字 字符串 布爾值 對象、數組和null 函數 運算數未定義
例子: typeof(123) typeof("123") typeof(true) typeof([]) typeof(function(){}) typeof(arr)
返回值: "number" "string" "boolean" "object" "function" "undefined"

 

//typeof的括號可以不用,直接在后面跟需要測試的內容
var a; typeof a;        //"undefined"

var cc = {a:123}; typeof cc;        //"object"

typeof null;        //"object"

說明:

  • 用途:可以使用typeof來判斷一個變量是否存在,如:if(typeof a != "undefined")
    而不可使用:if(a),因為如果a不存在會報錯(未聲明),使用typeof則可以避免這個問題。
  • 局限:對於array、null和對象,typeof一律返回object。對此可以通過instanceof來區分。

 

5.JS的instanceof,判斷一個變量是否是某個對象的實例

var a = new Array(); a instanceof Array           //true
a instanceof Object          //true

// 判斷 foo 是否是 Foo 類的實例 , 並且是否是其父類型的實例
function Aoo(){} function Foo(){} Foo.prototype = new Aoo();//JavaScript 原型繼承
var foo = new Foo(); console.log(foo instanceof Foo)//true
console.log(foo instanceof Aoo)//true
  • instanceof 運算符判斷一個對象是否是另一個對象的實例。返回true或false
  • instanceof 運算符用來檢測 constructor.prototype 是否存在於參數 obj 的原型鏈上(或者說:檢測obj的原型鏈上是否存在constructor.prototype )

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM