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

資訊專(zhuān)欄INFORMATION COLUMN

JavaScript數(shù)據(jù)類(lèi)型與數(shù)據(jù)結(jié)構(gòu)

fireflow / 1691人閱讀

摘要:字符串類(lèi)型的字符串類(lèi)型用于表示文本數(shù)據(jù)。例如,使用一個(gè)分隔符,一個(gè)可以模仿一個(gè)列表一個(gè)的數(shù)組可能更適合一些。不幸的是,當(dāng)一個(gè)分隔符在用于列表中的元素時(shí),打亂了這個(gè)列表。屬性的值可以是任意類(lèi)型,包括具有復(fù)雜數(shù)據(jù)結(jié)構(gòu)的對(duì)象。

編程語(yǔ)言都具有內(nèi)建的數(shù)據(jù)結(jié)構(gòu),但各種編程語(yǔ)言的數(shù)據(jù)結(jié)構(gòu)常有不同之處。本文試圖列出 JavaScript 語(yǔ)言中內(nèi)建的數(shù)據(jù)結(jié)構(gòu)及其屬性,它們可以用來(lái)構(gòu)建其他的數(shù)據(jù)結(jié)構(gòu);同時(shí)盡可能的描述與其他語(yǔ)言的不同之處。

動(dòng)態(tài)類(lèi)型

JavaScript 是一種弱類(lèi)型或者說(shuō)動(dòng)態(tài)語(yǔ)言。這意味著你不用提前聲明變量的類(lèi)型,在程序運(yùn)行過(guò)程中,類(lèi)型會(huì)被自動(dòng)確定。這也意味著你可以使用同一個(gè)變量保存不同類(lèi)型的數(shù)據(jù):

var foo = 42;    // foo is a Number now
foo = "bar"; // foo is a String now
foo = true;  // foo is a Boolean now

注:TypeScript編譯語(yǔ)言針對(duì)此問(wèn)題做了改進(jìn);

數(shù)據(jù)類(lèi)型

最新的 ECMAScript 標(biāo)準(zhǔn)定義了 7 種數(shù)據(jù)類(lèi)型:

6 種原始類(lèi)型:

Boolean

Null

Undefined

Number

String

Symbol (ECMAScript 6 新定義)

和 Object

原始值(primitive values)
除 Object 以外的所有類(lèi)型都是不可變的(值本身無(wú)法被改變)。例如,與 C 語(yǔ)言不同JavaScript中字符串是不可變的(譯注:如,JavaScript中對(duì)字符串的操作一定返回了一個(gè)新字符串,原始字符串并沒(méi)有被改變)。我們稱(chēng)這些類(lèi)型的值為“原始值”。

布爾類(lèi)型(boolean)

布爾表示一個(gè)邏輯實(shí)體,可以有兩個(gè)值:true 和 false。

Null類(lèi)型

Null 類(lèi)型只有一個(gè)值: null。值 null 特指對(duì)象的值未設(shè)置。值 null 是一個(gè)字面量,它不像undefined 是全局對(duì)象的一個(gè)屬性。null 是表示缺少的標(biāo)識(shí),指示變量未指向任何對(duì)象。把 null 作為尚未創(chuàng)建的對(duì)象,也許更好理解。在 APIs 中,null 常在返回類(lèi)型是對(duì)象,但沒(méi)關(guān)聯(lián)值的地方使用。

Undefined類(lèi)型

一個(gè)沒(méi)有被賦值的變量會(huì)有個(gè)默認(rèn)值 undefined,undefined是全局對(duì)象的一個(gè)屬性。也就是說(shuō),它是全局作用域的一個(gè)變量。

數(shù)字類(lèi)型

根據(jù) ECMAScript 標(biāo)準(zhǔn),JavaScript 中只有一種數(shù)字類(lèi)型:基于 IEEE 754 標(biāo)準(zhǔn)的雙精度 64 位二進(jìn)制格式的值(-(263 -1) 到 263 -1)。它并沒(méi)有為整數(shù)給出一種特定的類(lèi)型。除了能夠表示浮點(diǎn)數(shù)外,還有一些帶符號(hào)的值:+Infinity,-Infinity 和 NaN (非數(shù)值,Not-a-Number)。

字符串類(lèi)型

JavaScript的字符串類(lèi)型用于表示文本數(shù)據(jù)。它是一組16位的無(wú)符號(hào)整數(shù)值的“元素”。在字符串中的每個(gè)元素占據(jù)了字符串的位置。第一個(gè)元素的索引為0,下一個(gè)是索引1,依此類(lèi)推。字符串的長(zhǎng)度是它的元素的數(shù)量。

JavaScript 字符串是不可更改的。這意味著字符串一旦被創(chuàng)建,就不能被修改。但是,可以基于對(duì)原始字符串的操作來(lái)創(chuàng)建新的字符串。例如:

獲取一個(gè)字符串的子串可通過(guò)選擇個(gè)別字母或者使用 String.substr().
兩個(gè)字符串的連接使用連接操作符 (+) 或者 String.concat().

可以使用字符串來(lái)表達(dá)復(fù)雜的數(shù)據(jù)。以下是一些很好的性質(zhì):

容易連接構(gòu)造復(fù)雜的字串符

字符串容易被調(diào)試(你看到的往往在字符串里)

字符串通常是許多APIs的常見(jiàn)標(biāo)準(zhǔn) (input fields, local storage values, XMLHttpRequest當(dāng)使用responseText等的時(shí)候回應(yīng)) 而且他只能與字符串一同使用。

按照慣例, 字符串一般可以用來(lái)表達(dá)任何數(shù)據(jù)結(jié)構(gòu)。這不是一個(gè)好主意。例如,使用一個(gè)分隔符,一個(gè)可以模仿一個(gè)列表(一個(gè)JavaScript的數(shù)組可能更適合一些) 。不幸的是,當(dāng)一個(gè)分隔符在用于列表中的元素時(shí),打亂了這個(gè)列表。 一個(gè)轉(zhuǎn)義字符等。所有這些慣例都變成了一個(gè)不存在的維護(hù)負(fù)擔(dān)而沒(méi)有正確的工具使用。

表達(dá)文本數(shù)據(jù)和符號(hào)數(shù)據(jù)時(shí)候推薦使用字符串。當(dāng)表達(dá)復(fù)雜的數(shù)據(jù)時(shí),使用字符串解析和適當(dāng)?shù)目s寫(xiě)。

符號(hào)類(lèi)型

符號(hào)(Symbols)是ECMAScript 第6版新定義的。符號(hào)類(lèi)型是唯一的并且是不可修改的, 并且也可以用來(lái)作為Object的key的值(如下). 在某些語(yǔ)言當(dāng)中也有類(lèi)似的原子類(lèi)型(Atoms). 你也可以認(rèn)為為它們是C里面的枚舉類(lèi)型.

Symbol()函數(shù)會(huì)返回symbol類(lèi)型的值,該類(lèi)型具有靜態(tài)屬性和靜態(tài)方法。它的靜態(tài)屬性會(huì)暴露幾個(gè)內(nèi)建的成員對(duì)象;它的靜態(tài)方法會(huì)暴露全局的symbol注冊(cè),且類(lèi)似于內(nèi)建對(duì)象類(lèi),但作為構(gòu)造函數(shù)來(lái)說(shuō)它并不完整,因?yàn)樗恢С终Z(yǔ)法:"new Symbol()"。每個(gè)從Symbol()返回的symbol值都是唯一的。

const symbol1 = Symbol();
const symbol2 = Symbol(42);
const symbol3 = Symbol("foo");

console.log(typeof symbol1);
// expected output: "symbol"

console.log(symbol3.toString());
// expected output: "Symbol(foo)"

console.log(Symbol("foo") === Symbol("foo"));
// expected output: false
對(duì)象

在計(jì)算機(jī)科學(xué)中, 對(duì)象是指內(nèi)存中的可以被 標(biāo)識(shí)符引用的一塊區(qū)域.

屬性

在 Javascript 里,對(duì)象可以被看作是一組屬性的集合。用對(duì)象字面量語(yǔ)法來(lái)定義一個(gè)對(duì)象時(shí),會(huì)自動(dòng)初始化一組屬性。(也就是說(shuō),你定義一個(gè)var a = "Hello",那么a本身就會(huì)有a.substring這個(gè)方法,以及a.length這個(gè)屬性,以及其它;如果你定義了一個(gè)對(duì)象,var a = {},那么a就會(huì)自動(dòng)有a.hasOwnProperty及a.constructor等屬性和方法。)而后,這些屬性還可以被增減。屬性的值可以是任意類(lèi)型,包括具有復(fù)雜數(shù)據(jù)結(jié)構(gòu)的對(duì)象。屬性使用鍵來(lái)標(biāo)識(shí),它的鍵值可以是一個(gè)字符串或者符號(hào)值(Symbol)。

ECMAScript定義的對(duì)象中有兩種屬性:數(shù)據(jù)屬性和訪(fǎng)問(wèn)器屬性。

數(shù)據(jù)屬性

數(shù)據(jù)屬性是鍵值對(duì),并且每個(gè)數(shù)據(jù)屬性擁有下列特性:

訪(fǎng)問(wèn)性屬性
訪(fǎng)問(wèn)器屬性有一個(gè)或兩個(gè)訪(fǎng)問(wèn)器函數(shù) (get 和 set) 來(lái)存取數(shù)值,并且有以下特性:

"標(biāo)準(zhǔn)的" 對(duì)象, 和函數(shù)節(jié)
一個(gè) Javascript 對(duì)象就是鍵和值之間的映射。鍵是一個(gè)字符串(或者 Symbol) ,值可以是任意類(lèi)型的值。 這使得對(duì)象非常符合哈希表。

函數(shù)是一個(gè)附帶可被調(diào)用功能的常規(guī)對(duì)象。

日期
當(dāng)你想要顯示日期時(shí),毋庸置疑,使用內(nèi)建的 Date 對(duì)象。

有序集: 數(shù)組和類(lèi)型數(shù)組

數(shù)組是一種使用整數(shù)作為鍵(integer-key-ed)屬性和長(zhǎng)度(length)屬性之間關(guān)聯(lián)的常規(guī)對(duì)象。此外,數(shù)組對(duì)象還繼承了 Array.prototype 的一些操作數(shù)組的便捷方法。例如, indexOf (搜索數(shù)組中的一個(gè)值) or push (向數(shù)組中添加一個(gè)元素),等等。 這使得數(shù)組是表示列表或集合的最優(yōu)選擇。

類(lèi)型數(shù)組(Typed Arrays)是ECMAScript Edition 6中新定義的 JavaScript 內(nèi)建對(duì)象,提供了一個(gè)基本的二進(jìn)制數(shù)據(jù)緩沖區(qū)的類(lèi)數(shù)組視圖。

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

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

相關(guān)文章

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

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

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

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

    tinysun1234 評(píng)論0 收藏0
  • JavaScript--變量基本數(shù)據(jù)類(lèi)型

    摘要:中變量可能包含兩種不同的數(shù)據(jù)類(lèi)型的值基本類(lèi)型和引用類(lèi)型。本文主要介紹基本數(shù)據(jù)類(lèi)型及其特點(diǎn)。操作符在介紹基本類(lèi)型值之前,先說(shuō)下操作符,操作符會(huì)返回?cái)?shù)據(jù)類(lèi)型的字符串表示。所有未初始化的變量均會(huì)保存該值。 前言JavaScript中的變量為松散類(lèi)型,所謂松散類(lèi)型就是指當(dāng)一個(gè)變量被申明出來(lái)就可以保存任意類(lèi)型的值,就是不像SQL一樣申明某個(gè)鍵值為int就只能保存整型數(shù)值,申明varchar只能保...

    XanaHopper 評(píng)論0 收藏0
  • 前端基礎(chǔ)進(jìn)階(一):內(nèi)存空間詳細(xì)圖解

    摘要:一棧數(shù)據(jù)結(jié)構(gòu)與不同,中并沒(méi)有嚴(yán)格意義上區(qū)分棧內(nèi)存與堆內(nèi)存。引用數(shù)據(jù)類(lèi)型的值是保存在堆內(nèi)存中的對(duì)象。不允許直接訪(fǎng)問(wèn)堆內(nèi)存中的位置,因此我們不能直接操作對(duì)象的堆內(nèi)存空間。為了更好的搞懂變量對(duì)象與堆內(nèi)存,我們可以結(jié)合以下例子與圖解進(jìn)行理解。 showImg(https://segmentfault.com/img/remote/1460000009784102?w=1240&h=683); ...

    _Suqin 評(píng)論0 收藏0
  • JavaScript設(shè)計(jì)模式開(kāi)發(fā)實(shí)踐 | 01 - 面向?qū)ο蟮?em>JavaScript

    摘要:在中,并沒(méi)有對(duì)抽象類(lèi)和接口的支持。例如,當(dāng)對(duì)象需要對(duì)象的能力時(shí),可以有選擇地把對(duì)象的構(gòu)造器的原型指向?qū)ο?,從而達(dá)到繼承的效果。本節(jié)內(nèi)容為設(shè)計(jì)模式與開(kāi)發(fā)實(shí)踐第一章筆記。 動(dòng)態(tài)類(lèi)型語(yǔ)言 編程語(yǔ)言按數(shù)據(jù)類(lèi)型大體可以分為兩類(lèi):靜態(tài)類(lèi)型語(yǔ)言與動(dòng)態(tài)類(lèi)型語(yǔ)言。 靜態(tài)類(lèi)型語(yǔ)言在編譯時(shí)已確定變量類(lèi)型,動(dòng)態(tài)類(lèi)型語(yǔ)言的變量類(lèi)型要到程序運(yùn)行時(shí),待變量被賦值后,才具有某種類(lèi)型。 而JavaScript是一門(mén)典型...

    suxier 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<