javaScript基本數(shù)據(jù)類型

我們知道JavaScript有ECMAScript、DOM、BOM三部分組成,下面一幅圖可以簡單明了的說明JavaScript的組成。


注:ECMAScript(European Computer Manufacturers Association)是由一種Ecma國際前身為歐洲計(jì)算機(jī)制造商協(xié)會(huì)制定的標(biāo)準(zhǔn)。簡單來說,ECMAScript不是一門語言,而是一個(gè)標(biāo)準(zhǔn)。
ECMAScript中有5種簡單數(shù)據(jù)類型,也稱為基本數(shù)據(jù)類型:Undefined、Null、Boolean、String、Number。學(xué)習(xí)這些之前,需要先了解typeof操作符。
typeof的作用是判斷給定數(shù)據(jù)的類型。具體用法見下面代碼:

//1: typeof(直接量/變量)
console.log(typeof ("哈哈哈")); // string
console.log(typeof(13)); // number

// 2: typeof 直接量/變量
console.log(typeof "你好"); // string
console.log(typeof 23);  // number

一、Undefined類型

Undefined類型只有一個(gè)值undefined,如果一個(gè)變量只有聲明,沒有賦值,那它的結(jié)果就是undefined,頁面上不會(huì)報(bào)錯(cuò)。
對(duì)于尚未聲明的對(duì)象,只能執(zhí)行一項(xiàng)操作,即使用typeof操作符檢測(cè)其數(shù)據(jù)類型。

<script type="text/javascript">
    // 如果一個(gè)變量只有聲明,沒有賦值,那它的結(jié)果就是undefined,頁面上不會(huì)報(bào)錯(cuò)
    var a;
    console.log(a); // undefined
    console.log(typeof a); // undefined

    var b
    console.log(typeof b); // undefined 
    </script>

結(jié)果表明:對(duì)未初始化和未聲明的變量執(zhí)行typeof操作都返回了undefined值。

二、Null類型

Null類型:空對(duì)象,也是只有一個(gè)值:null。從邏輯角度講,null值表示一個(gè)空對(duì)象指針,而這也正是使用typeof操作符檢測(cè)其類型返回"object"的原因。undefined是派生自null,所以,它們相等性測(cè)試結(jié)果返回true。它有一個(gè)很常用的用處:如果定義的變量準(zhǔn)備在將來用于保存對(duì)象,那么最好將該變量初始化為null。

<script>
    console.log(typeof null); // object

    var a = null;
        if (a) {
            alert("true");
        } else {
            alert("false");
        }  // 返回false

        if (null == undefined) {
            console.log("undefined值是派生自null")
        }
</script>

三、Boolean類型

Boolean類型有兩個(gè)字面值,分別是true、false。雖然它只有兩個(gè)值,但是任何類型都可以轉(zhuǎn)換成Boolean,數(shù)據(jù)類型及其轉(zhuǎn)換規(guī)則如下圖:



總結(jié)出來即是:除了false、""、NAN、0、Undefined、Null轉(zhuǎn)換為Boolean的時(shí)候結(jié)果是false,其余都是true。

四、String類型

1、String:即字符串,簡單來說就是用引號(hào)引起來的文本,可以是單引號(hào),也可以是雙引號(hào)。字符串長度用length表示。ECMAScript中的字符串是不可變的,也就是說,字符串一旦創(chuàng)建,它的值就不能改變,如果改變了字符串,編譯不會(huì)出現(xiàn)問題,但是內(nèi)存會(huì)出現(xiàn)問題,特別影響性能。
要改變某個(gè)變量保存的字符串,首先要銷毀原來的字符串,然后再用另一個(gè)包含新值的字符串填充該變量,例如:
var str = "12"; str = str + "ab";

2、字符字面量:String類型包含一些特殊的字符字面量,也叫轉(zhuǎn)義字符,比如\n表示換行、\b表示退格、\表示斜杠、'表示單引號(hào)、''表示雙引號(hào)等。如果字符串中,包含雙字節(jié)字符,length屬性可能不會(huì)精確地返回字符串中的字符數(shù)目。

3、如果字符串中出現(xiàn)引號(hào):

  • 如果字符串中出現(xiàn)雙引號(hào),可以把字符串的引號(hào)改成單引,反之,亦然
  • 使用轉(zhuǎn)義符
<script>
        // 括號(hào)里面直接用的數(shù)據(jù),叫做直接量
        alert("123");
        alert("1abv");
        alert('你好');
        // alert(abc); // 不是字符串,控制臺(tái)會(huì)出現(xiàn)報(bào)錯(cuò)

        alert("我說:“你好”"); //不會(huì)出錯(cuò)
        // alert("you say:"today is a good day"");  // 會(huì)報(bào)錯(cuò),可以改成如下
        alert('you say:"today is a good day"');

        alert("you say: \n \'hello\ \"world\" \b \"你好\"");
    </script>

五、Number類型

1、Number類型即是數(shù)值,分為浮點(diǎn)數(shù)值和整數(shù)數(shù)值,這里不再做過多說明,下面講一下數(shù)值范圍。
由于內(nèi)存限制,ECMAScript并不能保存所有的數(shù)值類型,最小值保存在Number.MIN_VALUE,最大值保存Number_MAX_VALUE中,如果超過范圍,會(huì)被自動(dòng)轉(zhuǎn)換成特殊的inFinity(正無窮)和-inFinity(負(fù)無窮)??梢杂胕sFinite()函數(shù)來判斷數(shù)值是否在最大值和最小值之間。

<script>
        console.log(isFinite(123)); // true
        var s = Number.MAX_VALUE + Number.MAX_VALUE;
        console.log(isFinite(s)); // false
        console.log(maxSum); // infinity(正無窮)

</script>

2、NaN
NaN(not a number)即非數(shù)值,是number的一種,用來表示數(shù)值的一種不正常的狀態(tài),一般情況下,會(huì)在數(shù)值計(jì)算錯(cuò)誤的時(shí)候出現(xiàn),它特殊到自己不等于自己。判斷當(dāng)前的數(shù)據(jù)是否是NaN的函數(shù)isNaN(),參數(shù)可以是任何數(shù)值,該函數(shù)可以幫確定這個(gè)參數(shù)是否“不是數(shù)值”,它在接到一個(gè)參數(shù)后,會(huì)嘗試將這個(gè)值轉(zhuǎn)換為數(shù)值,,函數(shù)返回false。某些不是數(shù)值的值會(huì)直接轉(zhuǎn)換為數(shù)值,而不能被轉(zhuǎn)換成數(shù)值的參數(shù),會(huì)導(dǎo)致這個(gè)函數(shù)返回true。


<script>
         console.log(isNaN(NaN));   // true
         console.log(isNaN(10));    // false(10是一個(gè)數(shù)值)
         console.log(isNaN("10"));  // false(可以被轉(zhuǎn)換成數(shù)值10)
         console.log(isNaN(true));  // false (可以被轉(zhuǎn)換常數(shù)值1)
         console.log(isNaN(false)); // false(可以被轉(zhuǎn)換成數(shù)值0)
         console.log(isNaN("你好")); // true(不能被轉(zhuǎn)換成數(shù)值)
</script>

六、String、Number使用注意

  • 如果兩個(gè)字符串用+相連,那加號(hào)的作用是連接這兩個(gè)字符串
  • 如果兩個(gè)數(shù)值用+相連,那么加號(hào)的作用是兩個(gè)數(shù)值相加
  • 如果加號(hào)連接的兩個(gè)直接量中有一個(gè)是字符串,那么作用就是連接
<script>
         console.log("我+sayHi"); // 我+nihai
         console.log("我"+"sayHi"); // 我nihai 

         var a = 123;
         var b = "123";
         console.log(a + a + a + b); // string "369123"
         console.log(b + a + a + a); // string "123123123123"
</script>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容