String類型用于表示由零或多個16位Unicode字符組成的字符序列,即字符串。字符串可以由雙引號(“)或單引號(‘)表示,因此下面兩種字符串的寫法都是有效的:
var firstName="Marry";
var firstName='Jane';
與PHP中的雙引號和單引號會影響對字符串的解釋方式不同,ECMAScript中的這兩種語法形式沒有什么區別。用雙引號表示的字符串和用單引號表示的字符串完全相同。不過,以引號開頭的字符串也必須以雙引號結尾,而以單引號開頭的字符串必須以單引號結尾。例如,下面這種字符串表示法會導致語法錯誤:
//語法錯誤(左右引號必須匹配)
var firstName="Nicholas';
1、字符字面量
String 數據類型包含一些特殊的字符字面量,也叫轉義序列,用于表示非打印字符,或者具有其他用途的字符。這些字符字面量如下表所示:
這些字符字面量可以出現在字符串中的任意位置,而且也將被作為一個字符來解析,如下面的例子所示:
var text="sigma: \u03a3.";
這個例子中的變量text有28個字符,其中6個字符長的轉移序列表示1個字符。任何字符串的長度都可以通過訪問其length屬性取得,例如:
alert(text.length);//輸出28
這個屬性返回的字符數包括16位字符的數目。如果字符串包含雙字節字符,那么length屬性可能不會精確的返回字符串中字符數目。
2.字符串的特點
ECMAScript中的字符串是不可改變的,也就是說,字符串一旦創建,它們的值就不能改變。要改變某個變量保存的字符串,首先要銷毀原來的字符串,然后再用另一個包含新值的字符串填充該變量,例如:
var lang="Java";
lang=lang+"Script";
以上示例中的變量lang開始時包含字符串“Java”。而第二行代碼把lang的值重新定義為“Java”與“Script”的組合,即“JavaScript”。實現這個操作的過程如下:首先創建一個能容納10個字符的新字符串,然后再這個字符串中填充"Java"和“Script”,最后一步是銷毀原來的字符串“Java”和字符串“Script”,因為這兩個字符串已經沒用了。這個過程是在后臺發生的,而這也是在某些舊版本的瀏覽器(如版本低于1.0的Firefox,IE6等)中拼接字符串時速度很慢的原因所在。但這些瀏覽器后來的版本已經解決了這個低效率的問題。
3.轉換為字符串
要把一個值轉換為一個字符串有兩種方式。第一種是使用幾乎每個值都有的toString()方法。這個方法唯一要做的就是返回相應值的字符串表現。來看下面的例子:
var age=11;
//字符串“11”
var ageAsString=age.toString();
var fount=true;
//字符串"true"
var foundAsString=found.toString()
數值,布爾值,對象和字符串值(沒錯,每個字符串也都有一個toString()方法,該方法返回值返回串的一個副本)都有toString()方法。但null和undefined值沒有這個方法。
多數情況下,調用toString方法不必傳遞參數。但是,在調用數值的toString()方法時,可以傳遞一個參數:輸出數值的基數。默認情況下,toString()方法以十進制格式返回數值的字符串表示。而通過傳遞基數,toString()輸出以二進制、八進制、十六進制,乃至其他任意有效進制格式表示的字符串值。下面給出幾個例子:
var num=10;
alert(num.toString()); //"10"
alert(num.toString(2)); //"1010"
alert(num.toString(8)); //"12"
alert(num.toString(10)); //"10"
alert(num.toString(16)); //"a"
通過這個例子可以看出,通過指定基數,toString()方法會改變輸出的值。而數值10根據基數的不同,可以在輸出時被轉換為不同的數值格式。注意,默認的(沒有參數的)輸出值與指定基數10時的輸出值相同。
在不知道要轉換的值是不是null或undefined的情況下,還可以使用轉型函數String(),這個函數能夠將任何類型的值轉換為字符串。String()函數遵循下列轉換規則:
如果值有toString()方法,則調用該方法(沒有參數)并返回相應的結果;
如果值是null,則返回"null";
如果值是undefined,則返回“undefined”
下面再看幾個例子:
var value1=10;
var value2=true;
var value3=null;
alert(String(value1)); //"10"
alert(String(value2)); //"true"
alert(String(value3)); //"null"
alert(String(value4)); //"undefined"
這里先后轉換了4個值:數值、布爾值、null和undefined。數值和布爾值的轉換結果與調用toString()方法得到的結果相同。因為null和undefined沒有toString()方法,所以String()函數就返回了這兩個值的字面量。
掃一掃 加微信咨詢