教育行業(yè)A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

常見的Javascript數(shù)據(jù)類型有哪些?

更新時間:2021年05月06日15時00分 來源:傳智教育 瀏覽次數(shù):

JavaScript是一種弱類型語言,不用提前聲明變量的數(shù)據(jù)類型。在程序運行過程中,變量的數(shù)據(jù)類型會被自動確定。與之相對的是強類型語言,如C、Java。 下面我們通過代碼比較弱類型語言與強類型語言的區(qū)別,如下所示。

//強類型語言(Java)
int num = 10; //這里的變量num是int型(整數(shù)類型)
//弱類型語言(JavaScript)
var num = 10; //這里的變量num一開始是一個數(shù)字型
num = 'abc';  //賦值一個字符串,現(xiàn)在num變成了字符串型

從上述代碼可以看出,JavaSeript變量的數(shù)據(jù)類型,是在程序運行時根據(jù)等號右邊的值來確定的。

JavaScript數(shù)據(jù)類型分類

JavaScript中的數(shù)據(jù)類型分為兩大類,分別是基本數(shù)據(jù)類型和復(fù)雜數(shù)據(jù)類型(或稱為引用數(shù)據(jù)類型),如下圖所示。

JavaScript數(shù)據(jù)類型.png

在圖中,復(fù)雜數(shù)據(jù)類型的使用比較難,具體會在后面的章節(jié)中專門進(jìn)行講解,下面我們用代碼演示基本數(shù)據(jù)類型的使用。

(1)數(shù)字型(Number),包含整型值和浮點型值:

var numl = 21;         //整型值
var num2 = 0.21;   //浮點型值

(2)布爾型(Boolean),包含true和false兩個布爾值:

var bool1 = true;      //表示真、1、成立
var bool2 = false;     //表示假、0、不成立

(3)字符串型(String),用單引號或雙引號包裹:

var strl = '';       //空字符串
var str2 = 'abc';      //單引號包裹的字符串a(chǎn)bc
var str3 = "abc";      //雙引號包裹的字符串a(chǎn)bc


(4)未定義型(Undefined), 只有一個值undefined :

var a;              //聲明變量a,未賦值,此時a就是undefined
var b = undefined;     //變量b的值為undefined


(5)定型(Null),只有一個值null :

var a = null;        //變量a的值為null

需要注意的是,代碼中的值true、false、undefined和null全部都要寫成小寫字母。

(6)定型(Null),只有一個值null :

一、數(shù)字型

JavaScript中的數(shù)字型可以用來保存整數(shù)或浮點數(shù)(小數(shù)),示例代碼如下。

var age = 18;      //整數(shù)
var pi = 3.14;     //浮點數(shù)(小數(shù))

下面我們針對數(shù)字型在使用時的一些細(xì)節(jié)問題進(jìn)行介紹:

1.進(jìn)制

常見的進(jìn)制有二進(jìn)制、八進(jìn)制、十進(jìn)制和十六進(jìn)制。在一般情況下,數(shù)字都是使用十進(jìn)制來表示的。在JavaScript中還可以用八進(jìn)制和十六進(jìn)制,具體如下。

(1)在數(shù)字開頭加上0,表示八進(jìn)制數(shù)。八進(jìn)制數(shù)由0~7組成,逢8進(jìn)位:

var num1 = 07;
console.log(num1);       //輸出結(jié)果:7
 
var num2 = 010;
console.log(num2);    //輸出結(jié)果:8

(2)在數(shù)字開頭加上0x,表示十六進(jìn)制數(shù)。十六進(jìn)制數(shù)由0~9,a~f組成:

var numl = 0x9;
console.log((numl);     //輸出結(jié)果:9
var num2 = Oxa;
console.log(num2);       //輸出結(jié)果: 10

十六進(jìn)制數(shù)中的“x” 和“a~f"不區(qū)分大小寫。

 2.范圍

數(shù)字型的最大值和最小值可以用如下代碼來獲取。

console.log(Number.MAX_VALUE);       //輸出結(jié)果: 1.7976931348623157e+308
console.log(Number.MIN_VALUE);       //輸出結(jié)果: 5e-324

在輸出結(jié)果中,使用了科學(xué)計數(shù)法來表示,在JavaScript中可以使用科學(xué)計數(shù)法來表示數(shù)字。

3.特殊值

數(shù)字型有3個特殊值,分別是Infinity(無窮大)、-Infinity(無窮小)和NaN(Not a Number,非數(shù)值)。下面我們通過代碼演示這3種值出現(xiàn)的情況。

console.log(Number.MAX_VALUE*2);        //輸出結(jié)果: Infinity
console.log(-Number.MAX_VALUE*2);        //輸出結(jié)果: -Infinity
console.log('abc' - 100);            //輸出結(jié)果: NaN

若要判斷一個變量是否為非數(shù)字的類型,可以用isNaN()來進(jìn)行判斷,它會返回一個布爾值,返回true表示非數(shù)字,返回false表示是數(shù)字,示例代碼如下。

console.log (isNaN(12));     // 輸出結(jié)果: false
console.log(isNaN('abc'));    //輸出結(jié)果: true

二、字符串型

字符串是指計算機(jī)中用于表示文本的一系列字符, 在JavaSeript中使用單引號或雙引號來包裹字符串,示例代碼如下。

var str1 = '單引號字符串';
var str2 = "雙引號字符串";

下面我們針對字符串型在使用時的一些細(xì)節(jié) 問題進(jìn)行講解。

1.單、雙引號嵌套

在單引號字符串中可以直接書寫雙引號,在雙引號字符串中也可以直接書寫單引號,示例代碼如下。

//正確的語法
var str1 = 'I am a "programmer"';    // I am a "programmer"
var str2 = "I'm a 'programmer'"; // I'm a 'programmer'
 
//常見的錯誤語法
var str1 = 'I'm a programmer';   //單引號錯誤用法
var str2 = "I'm a "programmer""; //雙引號錯誤用法
var str3 = '工am a programmer"; //單雙引號混用

2.轉(zhuǎn)義符

在字符串中使用換行、Tab等特殊符號時,可以用轉(zhuǎn)義符來進(jìn)行轉(zhuǎn)義。轉(zhuǎn)義符都是以“\”

轉(zhuǎn)義符 解釋說明
\' 單引號
\n LF換行,n表示newline
\t Tab符號
\f 換頁
\b 退格,b表示blank
\xhh

由2位十六進(jìn)制數(shù)字hh表示的ISO-8859-1字符。如“\x61”表示"a"

\" 雙引號
\v 跳格(Tab、 水平)
\r CR換行
\\ 反斜線(\)
\0 Null字節(jié)
\uhhhh

由4位十六進(jìn)制數(shù)字hhhh表示的Unicode字符。如“\u597d”表示“好”

下面我們通過代碼演示轉(zhuǎn)義符的使用。

var strl = 'I\'m a programmer';   // I'm a programmer
var str2 = 'I am a\nprogrammer'    // I am a(換行)programmer
var str3 = 'C:\\JavaScript\\';   // C:\JavaScript\
var str4 = '\x61bc';        // abc
var str5 = '\u597d學(xué)生';      //好學(xué)生

 3.字符串長度

字符串是由若干字符組成的,這些字符的數(shù)量就是字符串的長度。通過字符串的length屬性可以獲取整個字符串的長度,示例代碼如下。

var str1 = 'I\'m a programmer';
console.log(str1.length);        //輸出結(jié)果: 16
var str2 ='我是程序員';
console.log(str2.length);        //輸出結(jié)果: 5

4.訪問字符串中的字符

字符串可以使用“[index]" 語法按照index(索引)訪問字符,index 從0開始,一直到字符串的長度減1,如果超過了index最大值,會返回undefined。示例代碼如下。

var str = 'I\'m a programmer';
console.log(str[0]);     //輸出結(jié)果:I
console.log(str[1]);    //輸出結(jié)果:
console.log(str[15]);    //輸出結(jié)果: r
console.log(str[16]);    //輸出結(jié)果: undefined

5.字符串拼接

多個字符串之間可以使用“+”進(jìn)行拼接,如果數(shù)據(jù)類型不同,拼接前會把其他類型轉(zhuǎn)成字符串,再拼接成一個 新的字符串。 示例代碼如下。

console.log('a' + 'b');   //ab
console.log('a'+ 18);    // a18
console.log(' ' + true);   // true
console.log('12' + 14);   // 1214
console.log(12 + 14);    //兩個數(shù)字相加,結(jié)果為26(非字符串排接

在實際開發(fā)中,經(jīng)常會將字符串和變量進(jìn)行拼接,這是因為使用變量可以很方便地修改里面的值。示例代碼如下:

var age = 18;
console.log('小明’+ age +歲');     //小明18歲

6.“顯示年齡” 案例

在學(xué)習(xí)了字符串的使用后,下面我們通過一個顯示年齡的案例來練習(xí)。本案例需要彈出一個輸人框,讓用戶輸人年齡。輸人后,單擊“確定”按鈕,程序就會彈出來一個警告框,顯示內(nèi)容為“您今年x歲了”,x表示剛才輸人的年齡。具體代碼如下。

//彈出一個輸人框,讓用戶輸人年齡
var age = prompt('請輸人您的年齡');
//將年齡與輸出的字符串拼接
var msg='您今年'+age+'歲了';
//彈出警告框,輸出程序的處理結(jié)果
alert(msg);

三、布爾型

布爾型有兩個值: true和false,表示事物的“真”和“假”,通常用于邏輯判斷。示例代碼如下。

console.log(true);    //輸出結(jié)果: true
console.log(false);   //輸出結(jié)果: false

當(dāng)布爾型和數(shù)字型相加的時候,true 會轉(zhuǎn)換為1, false 會轉(zhuǎn)換為0,如下所示。

console.log(true + 1);    //輸出結(jié)果:2
console.log(false + 1);   //輸出結(jié)果: 1

四、undefined 和null

如果一個變量聲明后沒有賦值,則變量的值就是undefined。我們也可以給一個變量賦一個null值,null一般用來表示空對象指針。

下面我們通過代碼演示undefined和null的使用。

var a;
console.log(a);       //輸出結(jié)果: undefined
console.log(a + ' ');     //輸出結(jié)果: undefined ( 字符串型)
console.log(a + 1);     //輸出結(jié)果: NaN
var b = null;
console.log(b + '_');     //輸出結(jié)果:null(字符串型)
console.log(b + 1);     //輸出結(jié)果: 1(b轉(zhuǎn)換為0)
console.log(b + true);     //輸出結(jié)果: 1(b轉(zhuǎn)換為0,true轉(zhuǎn)換為1)

數(shù)據(jù)類型檢測

在開發(fā)中,當(dāng)不確定一個變量或值是什么數(shù)據(jù)類型的時候,可以利用typeof運算符進(jìn)行數(shù)據(jù)類型檢測。示例代碼如下。

console.log(typeof 12);       //輸出結(jié)果: number
console.log (typeof '12');     //輸出結(jié)果: string
console.log (typeof true);     //輸出結(jié)果: boolean
console.log (typeof undefined);    //輸出結(jié)果: undefined
console.log (typeof null);       //輸出結(jié)果: object

在上述示例中,typeof 檢測nmull 值時返回的是object,而不是null,這是JavaScript最初實現(xiàn)時的歷史遺留問題,后來被ECMAScript沿用下來。

使用typeof可以很方便地檢測變量的數(shù)據(jù)類型,示例代碼如下。

var age = prompt('請輸入您的年齡');
console.log (age)
console.log (typeof age) ;

上述代碼執(zhí)行后,如果用戶什么都不輸人,單擊“確定”按鈕,則age的值為空字符串,類型為string;如果單擊“取消”按鈕,則age的值為null,類型為object;如果輸入的是一個數(shù)字,則age的值是用字符串保存的數(shù)字,類型為string。

typeof運算符的返回結(jié)果是-一個字符串,可以使用比較運算符“==” 來判斷typeof返回的檢測結(jié)果是否符合預(yù)期,示例代碼如下。

var a = '12';
console.log (typeof a == 'string');       //輸出結(jié)果: true
console.log (typeof a == 'number');    //輸出結(jié)果: false

在上述代碼中,“typeof a”的返回結(jié)果是string,在與字符串string比較時,結(jié)果為true,表示a是string類型;與number比較時,結(jié)果為false, 表示a不是number類型。

加QQ:435946716獲取Javascript全套視頻教程+筆記+源碼。


猜你喜歡:

JavaScript中如何搜索數(shù)組元素?

JavaScript中Math常用屬性和方法有哪些?

JavaScript中Date()函數(shù)怎么用?

JavaScript變量命名規(guī)范介紹

傳智教育HTML&JS+前端培訓(xùn)課程

0 分享到:
和我們在線交談!