欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

JavaScript的“強(qiáng)類(lèi)型數(shù)組”簡(jiǎn)介

2024-04-30    分類(lèi): 網(wǎng)站建設(shè)

我們平時(shí)使用的Array對(duì)象說(shuō)它是數(shù)組,其實(shí)是一個(gè)從哈希表擴(kuò)展的結(jié)構(gòu)體。因此它可以提供push、splice等一些列操作。這就意味著他們的效率是很低的。在JavaScript中也可以創(chuàng)建真正的數(shù)組,那就是強(qiáng)類(lèi)型數(shù)組。這個(gè)概念在以前的JavaScript中是沒(méi)有的,由于現(xiàn)在JavaScript的發(fā)展,它變得可以調(diào)用一些系統(tǒng)底層的東西比如WebGL。這些底層的操作需要直接訪(fǎng)問(wèn)內(nèi)存,而JavaScript本身的Array在內(nèi)存中是分散無(wú)法與底層操作對(duì)接,因此引入了這些強(qiáng)類(lèi)型的數(shù)組。 強(qiáng)類(lèi)型數(shù)組有三種基本類(lèi)型: Int 整數(shù) Uint 無(wú)符號(hào)整數(shù) Float IEEE754浮點(diǎn)數(shù) 根據(jù)這些基本類(lèi)型可以引申出8種類(lèi)數(shù)組: Int8Array Uint8Array Int16Array Uint16Array Int32Array Uint32Array Float32Array Float64Array 這些東西沒(méi)必要一個(gè)個(gè)去說(shuō)明,他們的規(guī)律性很強(qiáng)。這些數(shù)組的命名都是:基本類(lèi)型+位數(shù)+Array。我們都知道一個(gè)字節(jié)是8位的,所以8位的數(shù)組中每個(gè)元素就占一個(gè)字節(jié)。同理可知64位的數(shù)組每個(gè)元素占8個(gè)字節(jié)。就拿Int8Array來(lái)說(shuō),它是8位的整數(shù)。8位可以表示28=256個(gè)數(shù)字。而Int是有符號(hào)的,所以Int8Array的元素可以表示-128到127的整數(shù)。而Uint8Array的元素是無(wú)符號(hào)的,同理可知它可以表示0-255的整數(shù)。 由于這些數(shù)組是使用線(xiàn)性?xún)?chǔ)存,因此它們是定長(zhǎng)的,無(wú)法給數(shù)組添加元素。超出索引的賦值不會(huì)報(bào)錯(cuò),也不會(huì)生效。下面是一個(gè)簡(jiǎn)單的使用例子。 //創(chuàng)建一個(gè)具有3個(gè)元素的8為無(wú)符號(hào)整型數(shù)組 var a=new Uint8Array(3); //把Array對(duì)象轉(zhuǎn)換成無(wú)符號(hào)數(shù)組 var b=new Uint8Array([1,2,3]); //輸出到控制臺(tái) console.log(a); console.log(b);

這是最常用的兩種創(chuàng)建方式。第一中是傳入數(shù)組大小,這里我們傳入3,所以結(jié)果中輸出的數(shù)組有3個(gè)元素。而且這樣創(chuàng)建的數(shù)組把元素都初始化為0,不像C++中的new int不做初始化。第二種是傳入一個(gè)Array對(duì)象,轉(zhuǎn)換為Uint8Array。這樣得到的數(shù)組每一項(xiàng)的值就是原來(lái)Array對(duì)象中每一項(xiàng)的值。另外值得一提的是使用這個(gè)方法初始化時(shí)候,Array的元素是通過(guò)調(diào)用valueOf來(lái)轉(zhuǎn)換成數(shù)值的,無(wú)法轉(zhuǎn)換的數(shù)據(jù)則被置0??聪旅孢@個(gè)例子 <script> var o={ valueOf:function(){ return 123; } }; console.log(new Uint8Array([o,"123","xyz"]));

除了這兩種初始化方式外還有另一只不常用的方式。使用ArrayBuffer,也就是傳入一塊內(nèi)存指針來(lái)創(chuàng)建數(shù)組。ArrayBuffer的功能和C語(yǔ)言中的malloc相似,就是申請(qǐng)一塊連續(xù)的內(nèi)存,只不過(guò)它不需要手動(dòng)釋放內(nèi)存而已。系統(tǒng)也不會(huì)直接返回個(gè)指針給JavaScript,ArrayBuffer的返回值是一個(gè)封裝成了對(duì)象的指針,我們就稱(chēng)它為緩沖區(qū)吧。下面是使用這個(gè)玩意兒的例子。 var buf=new ArrayBuffer(4); var a=new Uint16Array(buf); console.log(a); 這個(gè)測(cè)試我就不截圖了,a這個(gè)數(shù)組只有兩個(gè)元素。因?yàn)閁int16Array是16位的,也就是每個(gè)元素占兩個(gè)字節(jié)。而之前申請(qǐng)的內(nèi)存控件是4個(gè)字節(jié),因此生成的數(shù)組只有兩個(gè)元素。也許你會(huì)好奇,如果申請(qǐng)的內(nèi)存空間的字節(jié)數(shù)為奇數(shù),再轉(zhuǎn)換成Uint16Array結(jié)果會(huì)如何呢?試試就知道 var buf=new ArrayBuffer(3); var a=new Uint16Array(buf); console.log(a);

這樣是會(huì)報(bào)錯(cuò)的。刻意去使用ArrayBuffer的情況比較少,除非要讓兩個(gè)數(shù)組使用同一塊內(nèi)存空間。比如下面這個(gè)例子。 var buf=new ArrayBuffer(2); var a=new Uint8Array(buf); var b=new Int8Array(buf); a[0]=100; a[1]=200; console.log(a); console.log(b);

這個(gè)例子中兩個(gè)不同類(lèi)型的數(shù)組使用了同一塊內(nèi)存空間。第一個(gè)元素是100,在Uint和Int中都可以顯示為100;而第二個(gè)元素是200,Int8Array的數(shù)據(jù)大值是127,因此溢出導(dǎo)致數(shù)組倒轉(zhuǎn)-128+200-128=-56。這就是不同類(lèi)型的數(shù)組使用同一塊內(nèi)存空間。不僅是有無(wú)符號(hào)的區(qū)別,我們可以利用這個(gè)特性把32位的數(shù)組和8位的數(shù)組使用同一塊內(nèi)存控件來(lái)完成我們需要的操作,這里就不舉例了。 到這里“強(qiáng)類(lèi)型數(shù)組”就基本介紹完了,如果有興趣深入研究可以去查看官方文檔。 本文來(lái)源于成都網(wǎng)站建設(shè)公司與成都網(wǎng)站設(shè)計(jì)制作公司-創(chuàng)新互聯(lián)成都公司!

當(dāng)前標(biāo)題:JavaScript的“強(qiáng)類(lèi)型數(shù)組”簡(jiǎn)介
文章分享:http://aaarwkj.com/news41/326991.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)公司、虛擬主機(jī)、企業(yè)網(wǎng)站制作品牌網(wǎng)站制作、域名注冊(cè)

廣告

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

網(wǎng)站優(yōu)化排名
中文字幕在线日韩av| 亚洲中文字幕av天堂久久| 亚洲精品国产av一区二区三区| 99久久中文字幕伊人| 日本色小姐美国青青草原| 国产黄色av片免费| 午夜毛片免费在线播放| 内射久久一区二区亚洲| 精品人妻一区二区三区观看| 国产高清不卡av在线| 秋霞日韩欧美一区二区三区| 日本免费的高清一区二区| 久久99久久精品视频国产| 中文字幕人妻秘书社长| 免费黄色一区二区三区| 开心五月婷婷六月丁香| 熟女人妻精品一二三四| 一区二区亚洲欧美精品| 五月激情丁香婷婷色网| 校花出白浆视频一区二区三区| 日韩精品中文一区二区| 91美女黑丝免费国产视频| 精品日韩欧美精品日韩| 国产精品日韩欧美亚洲| 亚洲伊人av第一页在线观看| 亚洲精品一区二区99| 十八岁毛片一区二区三区| 亚洲超清av在线播放一区二区| 日韩区一区二在线视频| 久热在线这里只有精品| 黄色成人av在线网站| 日韩av黄色制服在线网站| 老湿机午夜在线免费观看| 一二区中文字幕在线观看| 亚州精品少妇久久久久久| 欧美丰满老妇性猛交| 99久久精彩免费视频| 饥渴少妇高潮露脸嗷嗷叫| 淫色网av人妻中文字幕| 亚洲熟妇av一区二区| 久久av天堂在线观看|