JavaScript菜鳥(niǎo)教程

JavaScript 對(duì)象

JavaScript 函數(shù)

JS HTML DOM

JS 瀏覽器BOM

AJAX 菜鳥(niǎo)教程

JavaScript 參考手冊(cè)

JavaScript 字符串(String)

字符串是一個(gè)或多個(gè)字符的序列,可以由字母,數(shù)字或符號(hào)組成。

JavaScript中的字符串是原始數(shù)據(jù)類(lèi)型,并且是不可變的,這意味著它們是不變的。

JavaScript字符串

JavaScript字符串是用引號(hào)括起來(lái)的零個(gè)或多個(gè)字符。

var x = "JavaScript教程 ";
測(cè)試看看?/?

在JavaScript中,您可以選擇單引號(hào)雙引號(hào)來(lái)包裹字符串。以下兩種方法都可以正常工作:

var msg1 = "Hello world";   // 使用雙引號(hào)
var msg2 = 'Hello world';   // 使用單引號(hào)
測(cè)試看看?/?

您可以在字符串內(nèi)使用引號(hào),只要它們與字符串周?chē)囊?hào)不匹配即可:

var str1 = 'She said "Hey" and left';  // 單引號(hào)中的雙引號(hào)
var str2 = "She said 'Hey' and left";  // 雙引號(hào)內(nèi)的單引號(hào)
var str3 = "Let's have a cup of tea";  // 雙引號(hào)內(nèi)的單引號(hào)
var str4 = 'We\'ll never give up'; // 用反斜杠轉(zhuǎn)義單引號(hào)
測(cè)試看看?/?

創(chuàng)建字符串的最新方法稱(chēng)為模板常量(template literal)

模板常量(template literal)使用反引號(hào)(` `),其工作方式與常規(guī)字符串相同:

var x = `該字符串使用反引號(hào)。`;
測(cè)試看看?/?

計(jì)算字符串長(zhǎng)度

length屬性返回字符串的長(zhǎng)度。對(duì)于空字符串,長(zhǎng)度為0。

var str = 'JavaScript教程 ';
str.length;// return 15
測(cè)試看看?/?

注意:空格也算作字符。

字符串連接

串聯(lián)意味著將兩個(gè)或多個(gè)字符串連接在一起以創(chuàng)建新的字符串。

+ 運(yùn)算符用于添加(連接)字符串。

var str1 = "quick brown fox";
var str2 = "over the lazy dog";

var str3 = "The " + str1 + " jumps " + str2;
測(cè)試看看?/?

template literal功能的一個(gè)特殊功能是能夠在字符串中包含表達(dá)式和變量。不必使用串聯(lián),我們可以使用${}語(yǔ)法來(lái)插入變量。

var str1 = "quick brown fox";
var str2 = "over the lazy dog";

var str3 = `The ${str1} jumps ${str2}.`;
測(cè)試看看?/?

在這種情況下,使用模板常量(template literal)可能會(huì)更易于編寫(xiě)和方便。

轉(zhuǎn)義序列

因?yàn)樽址仨氂靡?hào)引起來(lái),所以以下內(nèi)容將出錯(cuò),因?yàn)樗鼤?huì)使瀏覽器混淆字符串的結(jié)尾:

var x = 'We'll never give up';
var y = "She said "Hey" and left";

轉(zhuǎn)義序列意味著我們對(duì)它們進(jìn)行操作以確保將其識(shí)別為文本,而不是代碼的一部分。

在JavaScript中,我們通過(guò)在字符\前面加上反斜杠()來(lái)實(shí)現(xiàn)此目的。

Code結(jié)果描述
\''單引號(hào)
\"雙引號(hào)
\\\反斜杠

該序列\(zhòng)'  在字符串中插入一個(gè)單引號(hào):

var x = 'We\'ll never give up';
測(cè)試看看?/?

該序列\(zhòng)"  在字符串中插入雙引號(hào):

var x = "She said \"Hey\" and left";
測(cè)試看看?/?

該序列\(zhòng)\  在字符串中插入反斜杠:

var x = "The character \\ is called backslash";
測(cè)試看看?/?

JavaScript中還有其他六個(gè)轉(zhuǎn)義序列有效:

Code描述
\b退格鍵
\f換頁(yè)
\n新隊(duì)
\r回車(chē)
\t水平制表符
\v垂直制表符

對(duì)于要使用無(wú)法使用鍵盤(pán)鍵入的字符的情況,轉(zhuǎn)義序列也很有用。

長(zhǎng)代碼換行

為了獲得最佳可讀性,應(yīng)避免代碼行超過(guò)80個(gè)字符。

如果JavaScript語(yǔ)句不適合一行,則打破它的最佳位置是在運(yùn)算符之后:

document.getElementById("para").innerHTML = "The sum of 20 and 30 is " +
sum;
測(cè)試看看?/?

在一行上寫(xiě)一個(gè)很長(zhǎng)的字符串將很快變得很難閱讀和使用。

我們可以使用串聯(lián)運(yùn)算符(+)在多行上顯示字符串。

var str = "空氣污染是化學(xué)物質(zhì)進(jìn)入 " +
"大氣層。 它破壞環(huán)境平衡并導(dǎo)致 " +
"幾種疾病.";
測(cè)試看看?/?

除了使用多個(gè)字符串,我們還可以使用\轉(zhuǎn)義符。

var str = "空氣污染是化學(xué)物質(zhì)進(jìn)入 \
大氣層。 它破壞環(huán)境平衡并導(dǎo)致 \
幾種疾病.";
測(cè)試看看?/?

注意:所述的(\)方法是不優(yōu)選的,因?yàn)樗赡軐?dǎo)致某些瀏覽器和minifiers問(wèn)題。

為了使代碼更具可讀性,我們可以改用模板常量(template literal)字符串。這些消除了對(duì)長(zhǎng)字符串進(jìn)行串聯(lián)或轉(zhuǎn)義的需要。

var str = `空氣污染是化學(xué)物質(zhì)進(jìn)入
大氣層。 它破壞環(huán)境平衡并導(dǎo)致
幾種疾病.`;
測(cè)試看看?/?

重要的是要知道創(chuàng)建跨多行的字符串的所有方法,因?yàn)椴煌拇a庫(kù)可能使用各種標(biāo)準(zhǔn)。

字符串基元和字符串對(duì)象

通常,JavaScript字符串是從文字創(chuàng)建的原始值:

var city = "New Delhi";

但是,也可以使用 new關(guān)鍵字將字符串定義為對(duì)象:

var city = new String("New Delhi");

為了測(cè)試兩者之間的差異,我們將初始化一個(gè)字符串基元和一個(gè)字符串對(duì)象。

var str1 = "New Delhi";
var str2 = new String("New Delhi");

typeof str1// returns string
typeof str2// returns object
測(cè)試看看?/?

注意:請(qǐng)勿將字符串創(chuàng)建為對(duì)象。這會(huì)降低執(zhí)行速度,并會(huì)產(chǎn)生一些意外的結(jié)果。

使用==運(yùn)算符時(shí),相等的字符串相同:

var str1 = "New Delhi";
var str2 = new String("New Delhi");

document.write(str1 == str2); //返回 true,因?yàn)?nbsp;str1和 str2的值相等
測(cè)試看看?/?

使用===運(yùn)算符時(shí),相等的字符串不相同,因?yàn)?==運(yùn)算符期望值和類(lèi)型都相等:

var str1 = "New Delhi";
var str2 = new String("New Delhi");

document.write(str1 === str2); //返回false,因?yàn)閟tr1和str2的類(lèi)型不同
測(cè)試看看?/?

無(wú)法比較對(duì)象:

var str1 = new String("New Delhi");
var str2 = new String("New Delhi");

document.write(str1 == str2); //因?yàn)閟tr1和str2是不同的對(duì)象,所以返回false
document.write(str1 === str2); //因?yàn)閟tr1和str2是不同的對(duì)象,所以返回false
測(cè)試看看?/?

注意(==)和(===)之間的區(qū)別。比較兩個(gè)JavaScript對(duì)象將始終返回false。

丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清