javascript(數據類型)

數據類型  

  JavaScript 語言的每個值,都屬於某一種數據類型。JavaScript 的數據類型,共有六種。(ES6 又新增了第七種 symbol 類型的值)數組

  數值(number):整數和小數(好比1和3.14);函數

  字符串(string):文本(好比Hello World);spa

  布爾值(boolean):表示真僞的兩個特殊值,即true(真)和false(假);prototype

  undefined:表示「未定義」或不存在,即因爲目前沒有定義,因此此處暫時沒有任何值;設計

  null:表示空值,即此處的值爲空。code

  對象(object):各類值組成的集合。對象

  symbol:由Symbol()函數生成,表示獨一無二的值。blog

  一般,數值、字符串、布爾值這三種類型,合稱爲原始類型(primitive type)的值,即它們是最基本的數據類型,不能再細分了。對象則稱爲合成類型(complex type)的值,由於一個對象每每是多個原始類型的值的合成,能夠看做是一個存放各類值的容器。至於undefinednull,通常將它們當作兩個特殊值ip

  對象是最複雜的數據類型,又能夠分紅三個子類型。狹義的對象(object)、數組(array)、函數(function)字符串

typeof 運算符

  JavaScript 有三種方法,能夠肯定一個值究竟是什麼類型。typeof運算符instanceof運算符Object.prototype.toString方法

  typeof運算符能夠返回一個值的數據類型。

        let a;
        console.log(typeof a);//undefined
        
        let b=1;
        console.log(typeof b);//number
        
        let c='1';
        console.log(typeof c);//string
        
        let d=true;
        console.log(typeof d);//boolean
        
        let e=function(){};
        console.log(typeof e);//function
        
        let f=[1,2,3];
        console.log(typeof f);//object
        
        let g=null;
        console.log(typeof g);//object
        
        let h={};
        console.log(typeof h);//object
        
        let i=Symbol();
        console.log(typeof i);//symbol

  數值、字符串、布爾值分別返回number、string、boolean。函數返回function、undefined返回undefined,對象數組和null都返回了object

  函數也是對象,爲何typeof 運算符會返回 function呢?上面說過了function 也是一個對象,可是與普通的對象不一樣,其內部有一個call方法,用來表示這個對象是能夠調用的。

  typeof操做符在判斷Object時,若是內部實現了[[Call]]方法,就返回function

        console.log(typeof Object); // function
        console.log(typeof Array);// function

  上面已經能夠看到了,對象數組與null都返回了object,那麼咱們怎麼區分呢?

  instanceof運算符返回一個布爾值,表示對象是否爲某個構造函數的實例。剩下兩種的具體的用法後面會在作詳細的介紹。

        let h={};
        console.log(h instanceof Object);// true
        
        let f=[1,2,3];
        console.log(f instanceof Array);// true

  null的類型是object,這是因爲歷史緣由形成的。1995年的 JavaScript 語言初版,只設計了五種數據類型(對象、整數、浮點數、字符串和布爾值),沒考慮null,只把它看成object的一種特殊值。後來null獨立出來,做爲一種單獨的數據類型,爲了兼容之前的代碼,typeof null返回object就無法改變了。

null, undefined 和布爾值

  null與undefined均可以表示「沒有」,含義很是類似。將一個變量賦值爲undefined或null,老實說,語法效果幾乎沒區別。相等運算符(==)甚至直接報告二者相等。我我的認爲 null是我規定了它是空,而undefined 是我什麼都沒作的空,大概意思就是我努力了但什麼都沒獲得和我沒努力因此沒獲得

console.log(undefined==null);//true

  下面列舉一下變量爲undefined的幾種狀況。NaN數值一節介紹

        // 定義一個變量但爲賦值
        let i;
        console.log(i);//undefined
        
        // 接收的參數未傳值
        function f(x){
            console.log(x)
        }
        f();//undefined
        
        // 對象中的屬性不存在
        var obj={}
        console.log(obj.name)//undefined
        
        // 函數未有返回值
        let add=function(){}
        console.log(add())//undefined

  返回null的通常是錯誤處理時,表示沒有錯誤時,會返回null。

  根據 C 語言的傳統,null能夠自動轉爲0。

        console.log(Number(null));//0
        console.log(Number(undefined));//NaN
        
        console.log(5+null);//5
        console.log(5+undefined);//NaN

  null是一個表示「空」的對象,轉爲數值時爲0;undefined是一個表示"此處無定義"的原始值,轉爲數值時爲NaN

布爾值

  若是 JavaScript 預期某個位置應該是布爾值,會將該位置上現有的值自動轉爲布爾值。也就是隱式轉換。

        if(''){
            console.log(1);// 不會輸出
        }

  除了下面六個值被轉爲false,其餘值都視爲true。

  undefined null false 0 NaN ""或''(空字符串),都會轉換爲false; 可是注意:[]  或者 {}  是true

數值 下一節講 

相關文章
相關標籤/搜索