成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

【JavaScript】數(shù)據(jù)類型

ashe / 1965人閱讀

摘要:數(shù)值轉(zhuǎn)換有個函數(shù)可以把非數(shù)值轉(zhuǎn)換為數(shù)值和轉(zhuǎn)型函數(shù)可以用于任何數(shù)據(jù)類型,后面兩個是專門用于把字符串轉(zhuǎn)換為數(shù)值。類型類型用于表示由零或多個位字符組成的字符序列,即字符串。

2.4 數(shù)據(jù)類型

ECMAScript中有5種簡單數(shù)據(jù)類型(基本數(shù)據(jù)類型):Undefined、Null、Boolean、Number和String。還有1種復(fù)雜數(shù)據(jù)類型--Object,Object本質(zhì)上是由一組無序的名值對組成的。

2.4.1 typeof操作符

typeof操作符用來檢測給定變量的數(shù)據(jù)類型,可能的返回值:

"undefined" 這個值未定義
"boolean" 這個值是布爾值
"string" 這個值是字符串
"number" 這個值是數(shù)值
"object" 這個值是對象或null
"function" 這個值是函數(shù)
例子:

var name = "tg";
console.log(typeof name);  // "string"
console.log(typeof (name));  // "string"
console.log(typeof {}); // "object"

typeof是一個操作符,后面的圓括號可有可無。

2.4.2 Undefined類型

Undefined類型只有一個值,即特殊的undefined。

如果在使用var聲明變量但未對其加以初始化時,這個變量的值就是undefined。

var name;
console.log(name == undefined);  // true 

對于未聲明過的變量,只能執(zhí)行一項操作,即使用typeof操作符檢測其數(shù)據(jù)類型(對未聲明的變量調(diào)用delete不會導(dǎo)致錯誤(在非嚴(yán)格模式下))

2.4.3 Null類型

Null類型也是只有一個值的數(shù)據(jù)類型,這個特殊值就是null。null值可以看作是一個空對象指針。

console.log(typeof null);  // "object"

undefined其實是派生自null值:

console.log(null == undefined);  // true
2.4.4 Boolean類型

Boolean類型有兩個字面值:true和false,兩個值是區(qū)分大小寫的。

要將一個值轉(zhuǎn)換為其對應(yīng)的Boolean值,可使用轉(zhuǎn)型函數(shù)Boolean():

var name = "tg";
console.log(Boolean(name);  // true

可以對任何類型的值調(diào)用Boolean函數(shù),而且總會返回一個Boolean值(true或false)

轉(zhuǎn)換規(guī)則:

對于true或false,返回原值(true或false)

對于String類型的值,任何非空字符串返回true,空字符串("")返回false

對于Number類型的值,任何非零數(shù)字值(包括無窮大),返回true;0和NaN返回false

對于Object類型的值,任何對象返回true,null返回false

對于Undefined類型,undefined返回false(只有一個值)

2.4.5 Number類型

最基本的數(shù)值字面量格式是十進(jìn)制整數(shù)。

var num = 15;

八進(jìn)制(以8為基數(shù)) 以0開頭,后面是(0~7)

var num = 070;  // 八進(jìn)制的56

十六進(jìn)制(以16為基數(shù)) 以0x開頭,后面是(0~9及A~F),字母A~F可以大小寫。

var num = 0xA;  //十六進(jìn)制的10

注意:在進(jìn)行算術(shù)計算時,所有以八進(jìn)制和十六進(jìn)制表示的數(shù)值都會被轉(zhuǎn)換成是十進(jìn)制。

1.浮點數(shù)值

浮點數(shù)值指包含一個小數(shù)點,并且小數(shù)點后面必須至少有一個數(shù)字。

var floatNum = 1.1;

保存浮點數(shù)值需要的內(nèi)存空間是保存整數(shù)值的兩倍。

對于那些極大或極小的數(shù)值,我們可以使用科學(xué)計數(shù)法(e表示法)來表示浮點數(shù)值。

e表示法表示的數(shù)值等于e前面的數(shù)值乘以10的指數(shù)次冪:

var floatNum = 3.125e7;  // 31250000
var floatNum1 = 3e-7;  //0.0000003

默認(rèn)情況下,ECMAScript會將那些小數(shù)點后面帶有6個零以上的浮點數(shù)值轉(zhuǎn)換為以e表示的數(shù)值。

var floatNum1 = 3e-7;  //0.0000003

浮點數(shù)的最高精度是17位小數(shù)。

0.1 + 0.2 = 0.3000000000000004; // 不是等于0.3

2.數(shù)值范圍

基于內(nèi)存的限制,ECMAScript只能保存有限的數(shù)值。
ECMAScript能夠表示的最小數(shù)值保存在Number.MIN_VALUE(最小值)中,這個值是5e-324;能夠表示的最大數(shù)值保存在Number.MAX_VALUE(最大值)中,這個值是1.7976931348623157e+308.

如果某次計算的結(jié)果得到了一個超出JavaScript數(shù)值范圍的值,那么這個數(shù)值就會被轉(zhuǎn)換成特殊的Infinity值;如果這個值是負(fù)數(shù),則會被轉(zhuǎn)換為-Infinity(負(fù)無窮),如果這個數(shù)值是整數(shù),則會轉(zhuǎn)換成Infinity(正無窮)。

注意:Infinity是不能參與計算的數(shù)值。

用isFinite()來判斷這個值是否無窮,該函數(shù)接受一個參數(shù)。如果參數(shù)位于最小與最大數(shù)值之間,返回true。

console.log(isFinite(1));  //true
console.log(isFinite(Infinity));  // false

3.NaN

NaN(Not a Number)表示非數(shù)值,這個數(shù)值用于表示一個本來要返回數(shù)值的操作數(shù)未返回數(shù)值的情況。

注意點:

任何涉及NaN的操作都會返回NaN。

NaN與任何值都不相等,包括NaN本身。

 console.log(NaN == NaN);  //false

我們可以用isNaN()函數(shù)來判斷是否非數(shù)值,該函數(shù)接受一個參數(shù),可以是任何類型。

console.log(isNaN(NaN));  // true

isNaN()在接收到一個值(可以是任何類型)之后,會嘗試將這個值轉(zhuǎn)換為數(shù)值,某些不是數(shù)值的值會直接轉(zhuǎn)換為數(shù)值,比如:字符串"10"或Boolean值。而任何不能被轉(zhuǎn)換為數(shù)值的值都會導(dǎo)致這個函數(shù)返回true。

console.log(isNaN(NaN));  // true
console.log(isNaN(10));  // false
console.log(isNaN("blue"));  //  true

4.數(shù)值轉(zhuǎn)換

有3個函數(shù)可以把非數(shù)值轉(zhuǎn)換為數(shù)值:Number()、parseInt()和parseFloat()

轉(zhuǎn)型函數(shù)Number()可以用于任何數(shù)據(jù)類型,后面兩個是專門用于把字符串轉(zhuǎn)換為數(shù)值。

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

如果是Boolean值,true和false將分別轉(zhuǎn)換為1和0

如果是數(shù)字值,只是簡單的傳入和返回

如果是null值,返回0

如果是undefined,返回NaN

如果是字符串中只包含數(shù)字(包括前面帶正負(fù)號),則將其轉(zhuǎn)換為十進(jìn)制數(shù)值(前導(dǎo)的零會被忽略)

如果字符串中包含有效的浮點格式,如1.1,則將其轉(zhuǎn)換為對應(yīng)的浮點數(shù)值

如果字符串中包含有效的十六進(jìn)制,如0xf,則將其轉(zhuǎn)換為相同大小的十進(jìn)制數(shù)值

如果字符串是空的,返回0

如果字符串中包含上述格式以外的字符,返回NaN

如果是對象,則調(diào)用對象的valueOf()方法,然后依照前面的規(guī)則轉(zhuǎn)換返回的值。如果轉(zhuǎn)換的結(jié)果是NaN,則調(diào)用對象的toString()方法,然后再次依照前面的規(guī)則轉(zhuǎn)換返回字符串值

console.log(Number("tg"));   // NaN
console.log(Number(""));   // 0
console.log(Number("0011"));  // 11
console.log(Number(true));   //1

一元加操作符的操作與Number函數(shù)規(guī)則相同。

parseInt()

parseInt()會忽略字符串前面的空格,直到找到第一個非空格字符。如果第一個字符不是數(shù)字字符或負(fù)號,就會返回NaN。如果第一個字符是數(shù)字字符,就會繼續(xù)解析,直到解析完所有后續(xù)字符或者遇到了一個非數(shù)字字符。

parseInt()也能識別八進(jìn)制(在ECMAScript 5中無法識別,將開頭的0當(dāng)作0)和十六進(jìn)制,最后會轉(zhuǎn)換成十進(jìn)制。

console.log(parseInt("123tg"));  // 123
console.log(parseInt(""));   // NaN
console.log(parseInt("070"));  // 70
console.log(parseInt("0xf"));  //15
console.log(parseInt(22.5));  // 22

我們還可以為parseInt()提供第二個參數(shù),指定需要轉(zhuǎn)換的進(jìn)制。

console.log(parseInt("0xAF",16));  // 175
console.log(parseInt("AF",16));  // 175
console.log(parseInt("AF"));  // NaN
console.log(parseInt("070",8));  // 56
console.log(parseInt("70",8));  // 56

如果提供了第二個參數(shù),要轉(zhuǎn)換八進(jìn)制和十六進(jìn)制時,可省略0和0x。

parseFloat()和parseInt()類似,也是從第一個字符(位置0)開始解析每個字符,而且一直解析到字符串末尾,或者解析到遇到一個無效的浮點數(shù)字字符為止,換句話說,字符串中的第一個小數(shù)點是有效的,后面的小數(shù)點是無效的,它還會忽略前導(dǎo)的零,只會解析十進(jìn)制值。

console.log(parseFloat("123tg"));  // 123
console.log(parseFloat("22.12.4"));   // 22.12
console.log(parseFloat("070"));  // 70
console.log(parseFloat("0xf"));  //0
console.log(parseFloat(22.5));  // 22.5

2.4.6 String類型

String類型用于表示由零或多個16位Unicode字符組成的字符序列,即字符串。字符串可以由雙引號或單引號表示。

var name = "tg";

用雙引號表示的字符串和用單引號表示的字符串完全相同,但要確保引號前后一致,也就是說以雙引號開頭的必須以雙引號結(jié)尾,以單引號開頭的必須以單引號結(jié)尾。

1.字符字面量

String數(shù)據(jù)類型包含了一些特殊的字符字面量,也叫轉(zhuǎn)義序列。

  換號
	   制表
  空格

  回車
f  進(jìn)紙
  斜杠
"  單引號
"  雙引號
xnn  以十六進(jìn)制代碼nn表示的一個字符(n為0~F),比如:x41表示"A"
unnn  以十六進(jìn)制代碼nnnn表示的一個Unicode字符(n為0~F)。比如:u03a3表示Σ

這些字符字面量可以出現(xiàn)在字符串中的任意位置,會被當(dāng)做一個字符來解析。

var name = "tgu03a3";
console.log(name);  //tgΣ
console.log(name.length);  // 3

任何字符串的長度都可以訪問其length屬性取得。

2.字符串的特點

ECMAScript中的字符串是不可變的。一旦創(chuàng)建,值就不會改變。

后臺邏輯:要改變某個變量保存的字符串,首先要銷毀原來的字符串,然后用另一個包含新值的字符串填充該變量。

3.轉(zhuǎn)換為字符串

要將一個值轉(zhuǎn)換為字符串有兩種方式:

使用每個值(null和undefined除外)都有的toString()方法

var age = 1;
console.log(age.toString());  // "1"

我們還可以給toString()傳入一個參數(shù),輸出數(shù)值的基數(shù)。

var num = 10;
console.log(num.toString());  // "10"
console.log(num.toString(2)); // 1010
console.log(num.toString(8));  // 12

可以使用轉(zhuǎn)型函數(shù)String(),能將任何類型的值轉(zhuǎn)換為字符串,轉(zhuǎn)換規(guī)則:

如果值有toString()方法,則調(diào)用該方法并返回相應(yīng)的結(jié)果
如果值是null,則返回null
如果值是undefined,則返回undefined

console.log(String(10));  // "10"
console.log(String(true));  // "true"
console.log(String(null));  // "null"
console.log(String(undefined));  // "undefined"

要把某個值轉(zhuǎn)為字符串,還可以使用加號操作符:

console.log( true + "");  // "true"

2.4.7 Object類型

ECMAScript中的對象其實就是一組數(shù)據(jù)和功能的集合。

對象可通過執(zhí)行new操作符后跟創(chuàng)建的對象類型的名稱來創(chuàng)建。

var o = new Object();

如果不傳參,可以省略后面的圓括號(不推薦)。

var o = new Object;

在ECMAScript中,Object類型是所有對象的基礎(chǔ)。

Object的每個實例都具有下列屬性和方法:

Constructor:保存著用于創(chuàng)建當(dāng)前對象的函數(shù),比如上面的例子,構(gòu)造函數(shù)就是Object()

hasOwnProperty(propertyName):用于檢查給定的屬性在當(dāng)前對象實例中是否存在(而不是在實例的原型中),參數(shù)必須是字符串形式

isPrototypeOf(object):用于檢查傳入的對象是否是另一個對象的原型

propertyIsEnumerable(propertyName):用于檢查給定的屬性是否能夠使用for-in語句來枚舉,參數(shù)必須是字符串形式

toLocaleString():返回對象的字符串表示,該字符串與執(zhí)行環(huán)境的地區(qū)對應(yīng)

toString():返回對象的字符串表

valueOf():返回對象的字符串、數(shù)值或布爾值表示,通常和toString()返回的值相同

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/81980.html

相關(guān)文章

  • JavaScript入門

    摘要:被識別為結(jié)束符。變量時被認(rèn)為時有名字的容器。常量一旦被聲明初始化,值并不能被改變。字符串可以看成右字符組成的數(shù)組,可能被誤認(rèn)為可變的。表達(dá)式?jīng)]有顯示的返回任何內(nèi)容。 Java script 簡介 Javascript 是一門跨平臺,面向?qū)ο蟮妮p量級腳本語言,運行于Javascript解釋權(quán)/引擎 avascript內(nèi)置了一個包含一系列對象的標(biāo)準(zhǔn)庫,比如數(shù)組,日期,數(shù)字和一個語言元素合...

    AaronYuan 評論0 收藏0
  • WebSocket系列之JavaScript中數(shù)字數(shù)據(jù)如何轉(zhuǎn)換為二進(jìn)制數(shù)據(jù)

    摘要:以和為例,說明中的數(shù)字?jǐn)?shù)據(jù)如何轉(zhuǎn)換為二進(jìn)制數(shù)據(jù)。對象用來表示通用的固定長度的原始二進(jìn)制數(shù)據(jù)緩沖區(qū)。中的數(shù)字?jǐn)?shù)據(jù)如何轉(zhuǎn)換為二進(jìn)制數(shù)據(jù)對和有了一個大概的了解,下面讓我們來看下它是如何進(jìn)行二進(jìn)制數(shù)據(jù)操作的。 概述 本文主要通過對JavaScript中數(shù)字?jǐn)?shù)據(jù)與二進(jìn)制數(shù)據(jù)之間的轉(zhuǎn)換,讓讀者能夠了解在JavaScript中如何對數(shù)字類型(包括但不限于Number類型)進(jìn)行處理。 二進(jìn)制數(shù)據(jù)在日常...

    MASAILA 評論0 收藏0
  • JavaScript學(xué)習(xí)第一天筆記(變量、常量、數(shù)據(jù)類型

    摘要:變量與常量變量定義變量是存儲數(shù)據(jù)信息的容器。中,變量是弱類型,也被稱為松散類型。三類型布爾類型只有兩個值均為小寫如果大寫活著大小寫混合,識別為另一個變量名稱。 JavaScript簡介 JavaScript是一門跨平臺、面向?qū)ο蟮妮p量級腳本語言,運行于JavaScript解釋器或者引擎中。JavaScript中,包括三個主要的部分1.核心語法內(nèi)容(ECMAScript)2.文檔對象模型...

    tinysun1234 評論0 收藏0
  • JavaScript-數(shù)據(jù)類型

    摘要:解釋一行,執(zhí)行一行這也意味著你可以使用同一個變量保存不同類型的數(shù)據(jù)二數(shù)據(jù)類型最新的標(biāo)準(zhǔn)定義了種數(shù)據(jù)類型種原型數(shù)據(jù)類型布爾值,和一個表明值的特殊關(guān)鍵字。我們稱這些類型的值為原始值四布爾值布爾值數(shù)據(jù)類型只能有兩個值,它們是文本和。 一、動態(tài)類型 JavaScript 是一種弱類型或者說動態(tài)語言。這意味著你不用提前聲明變量的類型,在程序運行過程中,類型會被自動確定。(解釋一行,執(zhí)行一行)這也...

    沈儉 評論0 收藏0
  • JavaScript的語言特性以及重要版本

    摘要:通常一個完成的不僅僅包含了還包括了以及相關(guān)版本該版本在中使用?;谠秃瘮?shù)先行的語言使用基于原型的的繼承機(jī)制,函數(shù)是的第一等公民其他相關(guān)的語言特性編譯型語言把做好的源程序全部編譯成二進(jìn)制代碼的可運行程序。 轉(zhuǎn)載請注明出處,創(chuàng)作不易,更多文章請戳 https://github.com/ZhengMaste... 前言:JavaScript誕生于1995年,它是一門腳本語言,起初的目...

    Yangder 評論0 收藏0
  • JavaScript數(shù)據(jù)類型數(shù)據(jù)結(jié)構(gòu)

    摘要:字符串類型的字符串類型用于表示文本數(shù)據(jù)。例如,使用一個分隔符,一個可以模仿一個列表一個的數(shù)組可能更適合一些。不幸的是,當(dāng)一個分隔符在用于列表中的元素時,打亂了這個列表。屬性的值可以是任意類型,包括具有復(fù)雜數(shù)據(jù)結(jié)構(gòu)的對象。 編程語言都具有內(nèi)建的數(shù)據(jù)結(jié)構(gòu),但各種編程語言的數(shù)據(jù)結(jié)構(gòu)常有不同之處。本文試圖列出 JavaScript 語言中內(nèi)建的數(shù)據(jù)結(jié)構(gòu)及其屬性,它們可以用來構(gòu)建其他的數(shù)據(jù)結(jié)構(gòu);...

    fireflow 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<