ECMAScript String類型
String類型用于表示由零或多個(gè)16位Unicode字符組成的字符序列,即字符串。字符串可以由雙引號(hào)(”)或單引號(hào)(’)表示,因此下面兩種字符串的寫法都是有效的:
var firstName="Nicholas";
var lastName=’Zakas’:
與PHP中的雙引號(hào)和單引號(hào)會(huì)影響對(duì)字符串的解釋方式不同,ECMAScript中的這兩種語法形式?jīng)]有什么區(qū)別。用雙引號(hào)表示的字符串和用單引號(hào)表示的字符串完全相同。不過,以雙引號(hào)開頭的字符串也必須以雙引號(hào)結(jié)尾,而以單引號(hào)開頭的字符串必須以單引號(hào)結(jié)尾。例如,下面這種字符串表示法會(huì)導(dǎo)致語法錯(cuò)誤:
var firstName='Nicholas";//語法錯(cuò)誤(左右引號(hào)必須匹配)
1.字符字面量
String數(shù)據(jù)類型包含一些特殊的字符字面量,也叫轉(zhuǎn)義序列,用于表示非打印字符,或者具有其他用途的字符。這些字符字面量如下表所示:
字面量含義
n換行
t制表
b空格
r回車
f進(jìn)紙
\斜杠
'單引號(hào)('),在用單引號(hào)表示的字符串中使用.例如:'喂,您好這里是南昌做網(wǎng)站公司,'百恒網(wǎng)絡(luò)''
"雙引號(hào)("),在用雙引號(hào)表示的字符串中使用.例如:"請(qǐng)問,南昌網(wǎng)頁設(shè)計(jì)公司那家最好,"百恒網(wǎng)絡(luò)""
xnn以十六進(jìn)制代碼nn表示的一個(gè)字符(其中n為0-F),例如:x41表示"A"
unnnn以十六進(jìn)制代碼nnnn表示的一個(gè)Unicode字符(其中n為0-F),例如:u03a3表示希臘字符∑
這些字符字面量可以出現(xiàn)在字符串中的任意位置,而且也將被作為一個(gè)字符來解析,如下面的例子所示:
var text=¨This is the letter sigma: u03a3.”;
這個(gè)例子中的變量text有28個(gè)字符,其申6個(gè)字符長(zhǎng)的轉(zhuǎn)義序列表示1個(gè)字符。
任何字符串的長(zhǎng)度都可以通過訪問其length屬性取得,例如:
alert(text .length);//輸出28
這個(gè)屬性返回了這個(gè)字符串中16位字符的數(shù)目。如果字符串中包含雙字節(jié)字符,那么length屬性可能不會(huì)精確地返回字符串中的字符數(shù)目。
2.字符串的特點(diǎn)
南昌網(wǎng)站建設(shè)公司百恒網(wǎng)絡(luò)前端開發(fā)工程師提醒廣大從事企業(yè)網(wǎng)站建設(shè)技術(shù)人員,ECMAScript中的字符串是不可變的,也就是說,字符串一旦創(chuàng)建,它們的值就不能改變。要改變某個(gè)變量保存的字符串,首先要銷毀原來的字符串,然后再用另一個(gè)包含新值的字符串填充該變量,例如:
var lang="Java";
lang=lang+"Script";
以上示例中的變量lang開始時(shí)包含字符串”Java”。而第二行代碼把lang的值重新定義為”Java "與”Script”的組合,即”JavaScript”。實(shí)現(xiàn)這個(gè)操作的過程如下:首先創(chuàng)建一個(gè)能容納10個(gè)字符的新字符串,然后在這個(gè)字符串中填充”Java”和”Script”,最后一步是銷毀原來的字符串”Java”和字符串”Script”,因?yàn)檫@兩個(gè)字符串已經(jīng)沒用了。這個(gè)過程是在后臺(tái)發(fā)生的,而這也是在某些舊版本的瀏覽器(例如版本低于1.0的Firefox. IE6等)中拼接字符串時(shí)速度很惺的原因所在。但這些瀏覽器后來的版本已經(jīng)解決了這個(gè)低效率問題。
3.轉(zhuǎn)換為字符串
要把一個(gè)值轉(zhuǎn)換為一個(gè)字符串有兩種方式。第一種是使用幾乎每個(gè)值都有的toString()方法。這個(gè)方法唯一要做的就是返回相應(yīng)值的字符串表現(xiàn)。來看下面的例子:
var age=11;
var ageAsString=age.toString(); //字符串"11"
var found=true;
var foundAsString=found.toString()j //字符串"true"
數(shù)值、布爾值、對(duì)象和字符串值(沒錯(cuò),每個(gè)字符串也都有一個(gè)toString()方法,該方法返回字符串的一個(gè)副本)都有toString()方法。但null和unde fined值沒有這個(gè)方法。
南昌網(wǎng)絡(luò)公司工程師總結(jié):多數(shù)情況下,調(diào)用toString()方法不必傳遞參數(shù)。但是,在調(diào)用數(shù)值的toString()方法時(shí),可以傳遞一個(gè)參數(shù):輸出數(shù)值的基數(shù)。默認(rèn)情況下,toString()方法以十進(jìn)制格式返回?cái)?shù)值的字符串表示。而通過傳遞基數(shù),toString()可以輸出以二進(jìn)制、八進(jìn)制、十六進(jìn)制,乃至其他任意有效進(jìn)制格式表示的字符串值。下面給出幾個(gè)例子:
var nuffi=10;
alert (num.toString()); // "10"
alert(num.toString(2)); // "1010u
alert (num. toString(8)); // "12”
alert (num.toString (10)); // "10”
alert(num.toString (16)); //"a"
通過這個(gè)例子可以看出,通過指定基數(shù),toString()方法會(huì)改變輸出的值。而數(shù)值10根據(jù)基數(shù)的不同,可以在輸出時(shí)被轉(zhuǎn)換為不同的數(shù)值格式。注意,默認(rèn)的(沒有參數(shù)的)輸出值與指定基數(shù)10 時(shí)的輸出值相同。
在不知道要轉(zhuǎn)換的值是不是null或unde fined的情況下,還可以使用轉(zhuǎn)型函數(shù)String(),這個(gè)函數(shù)能夠?qū)⑷魏晤愋偷闹缔D(zhuǎn)換為字符串。String()函數(shù)遵循下列轉(zhuǎn)換規(guī)則:
口如果值有toString()方法,則調(diào)用該方法(沒有參數(shù))并返回相應(yīng)的結(jié)果;
口如果值是null,則返回”null”;
口如果值是undefined,則返回”undefined”。
下面再看幾個(gè)例子:
var valuel=10;
var value2=true;
var value3=null;
var value4;
alert(String (valuel))j //"lo"
alert (String (value2));//"true"
Lng(value3)); //"null" //" undefined
這里先后轉(zhuǎn)換了4個(gè)值:數(shù)值、布爾值、“null”和”unde fined”。數(shù)值和布爾值的轉(zhuǎn)換結(jié)果與調(diào)用toString()方法得到的結(jié)果相同。因?yàn)椤眓ull”和”unde fined”沒有toString()方法,所以String()函數(shù)就返回了這兩個(gè)值的字面量。
希望對(duì)廣大站長(zhǎng)或網(wǎng)站建設(shè)公司的團(tuán)隊(duì)有所幫助,如對(duì)此不太理解的,可以與南昌網(wǎng)絡(luò)公司百恒網(wǎng)絡(luò)技術(shù)部聯(lián)系。我們很高與廣大站長(zhǎng)和網(wǎng)站建設(shè)公司技術(shù)人員分享我們的技術(shù)和經(jīng)驗(yàn)。