在JS中變量被分為基本類型變量和引用類型變量。
成都創(chuàng)新互聯(lián)公司專注網(wǎng)站設(shè)計,以設(shè)計驅(qū)動企業(yè)價值的持續(xù)增長,網(wǎng)站,看似簡單卻每一個企業(yè)都需要——設(shè)計,看似簡潔卻是每一位設(shè)計師的心血 十載來,我們只專注做網(wǎng)站。認(rèn)真對待每一個客戶,我們不用口頭的語言來吹擂我們的優(yōu)秀,成百上千家的成功案例見證著我們的成長。
1、基本類型變量用八字節(jié)內(nèi)存,存儲基本數(shù)據(jù)類型(數(shù)值、布爾值、null和未定義)的值。
2、引用類型變量則只保存對對象、數(shù)組和函數(shù)等引用類型的值得引用(即內(nèi)存地址)。
JS字符串的長度受到下標(biāo)限制。理論最大長度是2^53-1(即js中可表達(dá)的最大安全整數(shù))。
2^53是多大呢?大約9PB。根據(jù)統(tǒng)計,中國2014年所有出版物(不計復(fù)本)不到2000億字,也就是400GB而已。
按此推算,不要說存一個txt了,中國自有甲骨文以來所有的書、各類出版物字?jǐn)?shù)加在一起估計也不可能超過100TB,也就是0.1PB。
當(dāng)然啦,實際引擎是不可能允許分配那么大的字符串的,你的電腦也沒那么大存儲不是。V8的heap上限只有2GB不到,允許分配的單個字符串大小上限更只有大約是512MB不到。JS字符串是UTF16編碼保存,所以也就是2.68億個字符。FF大約也是這個數(shù)字
最近項目有個需求要用js計算一串字符串寫入到localStorage里所占的內(nèi)存,眾所周知的,js是使用Unicode編碼的。而Unicode的實現(xiàn)有N種,其中用的最多的就是UTF-8和UTF-16。因此本文只對這兩種編碼進(jìn)行討論。
input?id="wd"?type="text"?name=""
button?id="btn"計?算/button
script?type="text/javascript"
var?btn?=?document.getElementById("btn");
btn.onclick=function(){
var?str=document.getElementById("wd").value;
var?bt=0;
for?(var?i?=?0;?i??str.length;?i++)?{
var?un?=?str.charCodeAt(i);
if?(un=0??un=127)?{
bt+=1;
}else?if?(un127??un=2048)?{
bt+=2;
}else?if?(un2048??un=65536)?{
bt+=3;
}else?if?(un65536??un=2097152)?{
bt+=4;
}
}
alert(bt+"字節(jié)");
}
/script
根據(jù)Unicode 編碼 來求字節(jié)數(shù)
碼位為0 - 127之間的字符,是1個字節(jié)編碼。
碼位為128 – 2048之間的字符,編碼為2個字節(jié)。
碼位為2049 至 65536之間的字符,編碼為3個字節(jié)。
碼位為65537 至 2097152(但注意碼位最大值是1114112)之間的字符,編碼為4個字節(jié)
JS字符串的長度受到下標(biāo)限制。理論最大長度是2^53-1(即js中可表達(dá)的最大安全整數(shù))。2^53是多大呢?大約9PB。根據(jù)統(tǒng)計,中國2014年所有出版物(不計復(fù)本)不到2000億字,也就是400GB而已。按此推算,不要說存一個txt了,中國自有甲骨文以來所有的書、各類出版物字?jǐn)?shù)加在一起估計也不可能超過100TB,也就是0.1PB。當(dāng)然啦,實際引擎是不可能允許分配那么大的字符串的,你的電腦也沒那么大存儲不是。V8的heap上限只有2GB不到,允許分配的單個字符串大小上限更只有大約是512MB不到。JS字符串是UTF16編碼保存,所以也就是2.68億個字符。FF大約也是這個數(shù)字。根據(jù)最長的網(wǎng)絡(luò)小說是哪部,目前最長的網(wǎng)絡(luò)小說大概2000萬字。所以還是綽綽有余的?!兜啦亍反蠹s7000萬字,《大藏經(jīng)》大約1億字,也是存得下的。不過《永樂大典》有3.7億字,《四庫全書》有8億字,V8/FF的一個字符串就存不下嘍。然而IE11貌似可以存4GB的字符串,即21億字。其實限制是在服務(wù)器資源、網(wǎng)速和存儲。你文本還沒讀完,值還沒賦完,內(nèi)存不夠了。內(nèi)存夠了,幾百m幾個G的變量,搞得頁面請求超時了,訪客沒耐心關(guān)掉了,或者瀏覽器內(nèi)存崩潰了。取一次嗎?還是經(jīng)常要用,要持久化不,數(shù)據(jù)庫肯定存不下,文件存吧〔占硬盤,存不了幾個〕,又每次要io讀。你干嘛不搞幾百字的簡介,配個圖,附上文件的下載地址〔放網(wǎng)盤,2T內(nèi)免費〕不是很好嗎。
按字符算的話,不管是字母、數(shù)字、符號,還是漢字,都是按一個字符算的,樓上說的“中文算倆字符長度”是錯誤的。
如果是按字節(jié)來算的話,則要根據(jù)頁面的編碼來定,比如
gb2312
,字母、數(shù)字、符號等算一個字節(jié),漢字是兩個字節(jié);如果是utf-8,則漢字可能是2個、3個或4個字節(jié)(常見的是3個字節(jié));如果是
utf-16
,則不管是字母、數(shù)字、符號,還是漢字,都是2個字節(jié);等等。
一般來說英文是1個,中文是兩個。但是會根據(jù)編碼方式不同而不同。以下是搬運:
英文字母和中文漢字在不同字符集編碼下的字節(jié)數(shù)
英文字母:
字節(jié)數(shù) : 1;編碼:GB2312
字節(jié)數(shù) : 1;編碼:GBK
字節(jié)數(shù) : 1;編碼:GB18030
字節(jié)數(shù) : 1;編碼:ISO-8859-1
字節(jié)數(shù) : 1;編碼:UTF-8
字節(jié)數(shù) : 4;編碼:UTF-16
字節(jié)數(shù) : 2;編碼:UTF-16BE
字節(jié)數(shù) : 2;編碼:UTF-16LE
中文漢字:
字節(jié)數(shù) : 2;編碼:GB2312
字節(jié)數(shù) : 2;編碼:GBK
字節(jié)數(shù) : 2;編碼:GB18030
字節(jié)數(shù) : 1;編碼:ISO-8859-1
字節(jié)數(shù) : 3;編碼:UTF-8
字節(jié)數(shù) : 4;編碼:UTF-16
字節(jié)數(shù) : 2;編碼:UTF-16BE
字節(jié)數(shù) : 2;編碼:UTF-16LE
網(wǎng)頁標(biāo)題:javascript字節(jié),字節(jié),字符
網(wǎng)址分享:http://m.rwnh.cn/article38/dscoosp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)、品牌網(wǎng)站建設(shè)、、網(wǎng)站內(nèi)鏈、企業(yè)網(wǎng)站制作、建站公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)