成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

javascript中有哪些基本數(shù)據(jù)類型

本文章向大家介紹javascript中有哪些基本數(shù)據(jù)類型的基本知識(shí)點(diǎn)總結(jié)和需要注意事項(xiàng),具有一定的參考價(jià)值,需要的朋友可以參考一下。

創(chuàng)新互聯(lián)是專業(yè)的雙牌網(wǎng)站建設(shè)公司,雙牌接單;提供做網(wǎng)站、網(wǎng)站建設(shè),網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行雙牌網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!

ECMAScript中有5種基本數(shù)據(jù)類型:Undefined、Null、Boolean、Number、String。還有1種復(fù)雜數(shù)據(jù)類型—Object,Object實(shí)質(zhì)上是由一組無序的名值對(duì)(鍵值對(duì))組成的。ECMAScript不支持任何創(chuàng)建自定義類型的機(jī)制。

由于ECMAScript是松散型的,所以需要一種手段來檢測(cè)變量的數(shù)據(jù)類型,typeof就是具有這種功能的操作符。用typeof檢測(cè)變量可能返回以下某個(gè)字符串:

"undefined"變量未定義
"boolean"變量是布爾值
"string"變量是字符串
"number"變量是數(shù)值
"object"變量是對(duì)象或者null
"function"變量是函數(shù)

從技術(shù)的角度講,函數(shù)在ECMAScript中是對(duì)象,不是一種數(shù)據(jù)類型。然而,函數(shù)有一些特殊的屬性,因此通過typeof來區(qū)分函數(shù)和其它對(duì)象是有必要的。

Undefined類型只有一個(gè)值,就是特殊的undefined。在使用var聲明變量但未初始化時(shí),這個(gè)變量的值就是undefined,如:

var a;
alert(a == undefined);  //true

不過,包含undefined值的變量和尚未定義的變量不一樣,如:

var a; // 這個(gè)變量聲明之后默認(rèn)取得了undefined值
// 下面這個(gè)變量并沒有聲明
// var b
alert(a);  // "undefined"
alert(b);  // 產(chǎn)生錯(cuò)誤

然而對(duì)未聲明或者聲明沒有初始化的變量使用typeof都會(huì)返回undefined,如:

var a;
// var b;
alert(typeof a); // "undefined"  
alert(typeof b); // "undefined"

Null類型也只有一個(gè)值,就是null。從邏輯的角度來看,null值表示一個(gè)空指針,所以用typeof檢測(cè)null值會(huì)返回"object",如:

var car = null;
alert(typeof car); // "object"

所以如果要定義變量來存放對(duì)象,最好將該變量初始化為null。實(shí)際上,undefined值是繼承自null值的,所以判斷它們的相等性會(huì)返回true:

alert(null == undefined);     // true

盡管null和undefined有這樣的關(guān)系,但它們用途是完全不同的,因?yàn)闊o論什么時(shí)候都沒有必要把一個(gè)變量的值顯示的設(shè)置為undefined,然而當(dāng)定義一個(gè)還未保存對(duì)象的對(duì)象變量時(shí),就應(yīng)該將變量設(shè)置為null,這樣不僅可以體現(xiàn)null作為空對(duì)象的指針,還有能很好地區(qū)分null和undefined。

Boolean類型有兩個(gè)字面值:true和false,但是ECMAScript中所有類型的值都能調(diào)用Boolean()函數(shù)轉(zhuǎn)換成Boolean類型的值,下表列出了各種數(shù)據(jù)類型對(duì)應(yīng)的轉(zhuǎn)換規(guī)則:

數(shù)據(jù)類型轉(zhuǎn)換為true的值轉(zhuǎn)換為false的值
Booleantruefalse
String 任何非空字符串""空字符串
Number任何非零數(shù)字值0和NaN
Object任何對(duì)象null
Undefined/undefined

Number類型分為整數(shù)和浮點(diǎn)數(shù),整數(shù)可以用十進(jìn)制,八進(jìn)制或十六進(jìn)制表示,如:

var num1 = 22; //十進(jìn)制整數(shù)
var num2 = 070; //八進(jìn)制的56
var num3 = 079; // 無效的八進(jìn)制,解析為十進(jìn)制79
var num4 = 08; //無效的八進(jìn)制,解析為十進(jìn)制8
var num5 = 0xA; //十六進(jìn)制的10
var num6 = 0x1f; //十六進(jìn)制的31

但是八進(jìn)制字面量在嚴(yán)格模式下是無效的,在進(jìn)行算數(shù)計(jì)算時(shí),所有的數(shù)值最終都會(huì)轉(zhuǎn)換為十進(jìn)制數(shù)值。浮點(diǎn)數(shù)值必須包含一個(gè)小數(shù)點(diǎn),如:

var floatNum1 = 1.1;
var floatNum2 = .1; //有效,但不推薦
var floatNum3 = 1.; //小數(shù)點(diǎn)后面沒有數(shù)字,解析為1
var floatNum4 = 10.0; //整數(shù),解析為10

浮點(diǎn)數(shù)值的最高精度是17位小數(shù),但在進(jìn)行算數(shù)計(jì)算時(shí)精確度遠(yuǎn)不如整數(shù),例如:

var a = 0.1;
var b = 0.2;
var c = a + b; //c的值為0.30000000000000004

NaN,即非數(shù)值,是一個(gè)特殊的Number值,NaN有兩個(gè)特點(diǎn):任何和NaN操作的結(jié)果都會(huì)返回NaN,NaN與任何值都不相等,包括NaN。使用isNaN()函數(shù)可以判斷一個(gè)值是不是NaN,isNaN()在接收到一個(gè)參數(shù)時(shí),會(huì)嘗試將這個(gè)值轉(zhuǎn)換為數(shù)值,任何不能轉(zhuǎn)換為數(shù)值的值都會(huì)返回true,如:

alert(isNaN(NaN)); //true
alert(isNaN(10)); //false(10是一個(gè)數(shù)值)
alert(isNaN("10")); //false(可以被轉(zhuǎn)換為數(shù)值10)
alert(isNaN("abc")); //true(不能轉(zhuǎn)換為數(shù)值)
alert(isNaN(true)); //false(可以轉(zhuǎn)換為數(shù)值1)
var obj = {name:"zhangsan", age:"1"};
alert(isNaN(obj)); //true

isNaN()也能轉(zhuǎn)換對(duì)象,對(duì)象調(diào)用isNaN()時(shí),會(huì)首先調(diào)用對(duì)象的valueOf()方法,然后確定該方法的返回值是否可以轉(zhuǎn)換為數(shù)值,如果不能,則用這個(gè)返回值再調(diào)用toString()方法,再測(cè)試返回值。

非數(shù)值轉(zhuǎn)換成數(shù)值的方法有三個(gè):Number()、parseInt()、parseFloat()。Number()可以轉(zhuǎn)換任何數(shù)據(jù)類型的值,而parseInt()和parseFloat()只能轉(zhuǎn)換字符串。

Number()函數(shù)有以下轉(zhuǎn)換規(guī)則:

1.如果是Boolean值,true轉(zhuǎn)換為1,false轉(zhuǎn)換為0;

var num = Number(true); //1
var num2 = Number(false); //0

2.如果是Number值,就和傳入的值一樣;

var num = Number(1);    //1

3.如果是null,轉(zhuǎn)換為0;

var num = Number(null);    //0

4.如果是undefined,轉(zhuǎn)換為NaN;

var num = Number(undefined);    //NaN

5.如果是String值,要分多種情況,如果是空字符串,則轉(zhuǎn)換為0;如果是純數(shù)字的字符串,則將其轉(zhuǎn)換為相對(duì)應(yīng)的數(shù)值,如果字符串是數(shù)字且包含".",則將其轉(zhuǎn)換為對(duì)應(yīng)的浮點(diǎn)數(shù)值(如果字符串最前面是0,會(huì)被忽略),如果字符串是有效的十六進(jìn)制格式,會(huì)將其轉(zhuǎn)換為對(duì)應(yīng)的十進(jìn)制數(shù)值;如果字符串包含上述格式之外的字符,則轉(zhuǎn)換為NaN;如果字符串是對(duì)象,會(huì)首先調(diào)用對(duì)象的valueOf()方法,然后確定該方法的返回值是否可以轉(zhuǎn)換為數(shù)值,如果結(jié)果是NaN,則調(diào)用toString()方法,再測(cè)試返回值。

var num = Number("Hello World"); //NaN
var num2 = Number(""); //0
var num3 = Number("01"); //1
var num4 = Number("01.1"); //1.1
var obj = {name:"zhangsan", age:"1"};
alert(Number(obj)); //NaN

由于Number()在轉(zhuǎn)換字符串是比較復(fù)雜,所以轉(zhuǎn)換字符串常用parseInt()和parseFloat()。這兩個(gè)函數(shù)在轉(zhuǎn)換字符串時(shí),會(huì)檢測(cè)該字符串是否符合數(shù)值模式,從第一個(gè)非空格字符開始解析,如果第一個(gè)字符不是數(shù)值或者負(fù)號(hào),則返回NaN(包括空字符串)。如果第一個(gè)字符是字符串,則繼續(xù)解析后面的字符,直到解析完所有的字符或者遇到非數(shù)字字符。

parseInt()能夠識(shí)別各種整數(shù)格式(十進(jìn)制、八進(jìn)制、十六進(jìn)制),如果字符串以"0x"開頭且后跟數(shù)字字符,就會(huì)被解析為十六進(jìn)制,如果以"0"開頭且后跟數(shù)字字符,則會(huì)被解析為八進(jìn)制(ECMAScript5不識(shí)別八進(jìn)制,會(huì)將前面的0忽略,解析為十進(jìn)制)。

var num = parseInt("123Hello"); //123
var num2 = parseInt("");     //NaN
var num3 = parseInt("0xA");   //10(十六進(jìn)制)
var num4 = parseInt("22.3"); //22
var num5 = parseInt("070"); //56(ECMAScript3八進(jìn)制) 70(ECMAScript5十進(jìn)制)
var num6 = parseInt("23"); //23(十進(jìn)制)

為了解決兼容性問題,parseInt()提供第二個(gè)參數(shù),以何種數(shù)值格式解析。

var num1 = parseInt("0xAF", 16);  //175
var num2 = parseInt("AF", 16);  //175,可以省略前面的"0x"
var num3 = parseInt("10", 2);  //2(二進(jìn)制)
var num3 = parseInt("10", 8);  //8(八進(jìn)制)
var num3 = parseInt("10", 10);  //10(十進(jìn)制)
var num3 = parseInt("10", 16);  //16(十六進(jìn)制)

parseFloat()只識(shí)別第一個(gè)小數(shù)點(diǎn),后面的小數(shù)點(diǎn)就無效了,同時(shí)parseFloat()只識(shí)別是十進(jìn)制值,所以沒有第二個(gè)參數(shù),別的格式數(shù)值會(huì)被解析為0。

var num = parseFloat("123Hello");  //123
var num = parseFloat("0xA");  //0
var num = parseFloat("12.1");  //12.1
var num = parseFloat("12.1.1");  //12.1
var num = parseFloat("023");  //23
var num = parseFloat("1.1e3");  //1100

String類型值由若干個(gè)Unicode字符組成的字符序列構(gòu)成,可以由單引號(hào)('')或者雙引號(hào)("")表示,但是左右引號(hào)必須匹配。

var str1 = "abc";
var str2 = 'abc';<br>var str3 = "abc'; //語法錯(cuò)誤

將一個(gè)值顯式轉(zhuǎn)換為字符串有兩種方法,toString()和String(),數(shù)值、布爾值、對(duì)象和字符串都有toString()方法和String()方法,而undefined和null只有String()方法,toString()的參數(shù)是轉(zhuǎn)換的進(jìn)制格式。

var num = 10;
alert(num.toString());  //"10"
alert(num.toString(2));  //"1010"
alert(num.toString(8));  //"12" 
alert(num.toString(10)); //"10"
alert(num.toString(16)); //"A"
alert(true.toString());  //"true"
String(num);  //"10"
String(true);  //"true"
String(null); //"null"
var num1;
String(num1); //"undefined"

以上就是小編為大家?guī)淼膉avascript中有哪些基本數(shù)據(jù)類型的全部?jī)?nèi)容了,希望大家多多支持創(chuàng)新互聯(lián)!

網(wǎng)頁名稱:javascript中有哪些基本數(shù)據(jù)類型
新聞來源:http://jinyejixie.com/article12/ijddgc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號(hào)、網(wǎng)站設(shè)計(jì)公司、搜索引擎優(yōu)化、響應(yīng)式網(wǎng)站域名注冊(cè)、關(guān)鍵詞優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作
南陵县| 静海县| 南召县| 甘泉县| 湾仔区| 延安市| 广宁县| 元江| 吐鲁番市| 龙陵县| 安岳县| 秀山| 平南县| 宁强县| 肥城市| 新平| 乐昌市| 炉霍县| 南涧| 涡阳县| 邛崃市| 伊吾县| 南开区| 云龙县| 葫芦岛市| 盐城市| 措勤县| 陇川县| 南召县| 怀宁县| 刚察县| 方城县| 汉沽区| 章丘市| 原平市| 班玛县| 夏津县| 若尔盖县| 泰兴市| 清涧县| 乌鲁木齐市|