亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

目錄 搜尋
導(dǎo)論 前言 為什么學(xué)習(xí)JavaScript JavaScript的歷史 基本語法 語法概述 數(shù)值 字符串 對(duì)象 數(shù)組 函數(shù) 運(yùn)算符 數(shù)據(jù)類型轉(zhuǎn)換 錯(cuò)誤處理機(jī)制 JavaScript 編程風(fēng)格 標(biāo)準(zhǔn)庫(kù) Object對(duì)象 包裝對(duì)象和Boolean對(duì)象 Number對(duì)象 String對(duì)象 Math對(duì)象 Date對(duì)象 RegExp對(duì)象 JSON對(duì)象 ArrayBuffer:類型化數(shù)組 面向?qū)ο缶幊?/a> 概述 封裝 繼承 模塊化編程 DOM Node節(jié)點(diǎn) document節(jié)點(diǎn) Element對(duì)象 Text節(jié)點(diǎn)和DocumentFragment節(jié)點(diǎn) Event對(duì)象 CSS操作 Mutation Observer 瀏覽器對(duì)象 瀏覽器的JavaScript引擎 定時(shí)器 window對(duì)象 history對(duì)象 Ajax 同域限制和window.postMessage方法 Web Storage:瀏覽器端數(shù)據(jù)儲(chǔ)存機(jī)制 IndexedDB:瀏覽器端數(shù)據(jù)庫(kù) Web Notifications API Performance API 移動(dòng)設(shè)備API HTML網(wǎng)頁(yè)元素 Canvas API SVG 圖像 表單 文件和二進(jìn)制數(shù)據(jù)的操作 Web Worker 服務(wù)器發(fā)送事件 Page Visibility API Fullscreen API:全屏操作 Web Speech requestAnimationFrame WebSocket WebRTC Web Components HTML網(wǎng)頁(yè)的API HTML網(wǎng)頁(yè)元素 Canvas API SVG 圖像 表單 文件和二進(jìn)制數(shù)據(jù)的操作 Web Worker 服務(wù)器發(fā)送事件 Page Visibility API Fullscreen API:全屏操作 Web Speech requestAnimationFrame WebSocket WebRTC Web Components 開發(fā)工具 console對(duì)象 PhantomJS Bower:客戶端庫(kù)管理工具 Grunt:任務(wù)自動(dòng)管理工具 Gulp:任務(wù)自動(dòng)管理工具 Browserify:瀏覽器加載Node.js模塊 RequireJS和AMD規(guī)范 Source Map JavaScript 程序測(cè)試 JavaScript高級(jí)語法 Promise對(duì)象 有限狀態(tài)機(jī) MVC框架與Backbone.js 嚴(yán)格模式 ECMAScript 6 介紹 附錄 JavaScript API列表
文字

    • 概述

      • 定義

      • 轉(zhuǎn)義

      • 字符串與數(shù)組

    • 字符集

概述

定義

字符串就是若干個(gè)排在一起的字符,放在單引號(hào)或雙引號(hào)之中。

'abc'
"abc"

單引號(hào)字符串的內(nèi)部,可以使用雙引號(hào);雙引號(hào)字符串的內(nèi)部,可以使用單引號(hào)。

'key="value"'
"It's a long journey"

如果要在單引號(hào)字符串的內(nèi)部,使用單引號(hào)(或者在雙引號(hào)字符串的內(nèi)部,使用雙引號(hào)),就必須在內(nèi)部的單引號(hào)(或者雙引號(hào))前面加上反斜杠,用來轉(zhuǎn)義。

'Did she say \'Hello\'?'
"Did she say \"Hello\"?"

字符串默認(rèn)只能寫在一行內(nèi),分成多行將會(huì)報(bào)錯(cuò)。

'a
b
c'// SyntaxError: Unexpected token ILLEGAL

上面代碼將一個(gè)字符串分成三行,JavaScript就會(huì)報(bào)錯(cuò)。

如果長(zhǎng)字符串必須分成多行,可以在每一行的尾部使用反斜杠。

var longString = "Long \
long \
long \
string";
longString
// "Long long long string"

上面代碼表示,加了反斜杠以后,原來寫在一行的字符串,可以分成多行,效果與寫在同一行完全一樣。

但是,這種寫法有兩個(gè)注意點(diǎn),首先,它是ECMAScript 5新添加的,老式瀏覽器(如IE 8)不支持,其次,反斜杠的后面必須是換行符,而不能有其他字符(比如空格),否則會(huì)報(bào)錯(cuò)。

連接運(yùn)算符(+)可以連接多個(gè)單行字符串,用來模擬多行字符串。

var longString = "Long " + 
"long " +
"long " +
"string";

另外,有一種利用多行注釋,生成多行字符串的變通方法。

(function () { /*
line 1
line 2
line 3
*/}).toString().split('\n').slice(1,-1).join('\n')
// "line 1
// line 2
// line 3"

轉(zhuǎn)義

反斜杠在字符串內(nèi)有特殊含義,用來表示一些特殊字符,所以又稱為轉(zhuǎn)義符。

需要用反斜杠轉(zhuǎn)義的特殊字符,主要有下面這些:

  • \0 代表沒有內(nèi)容的字符(\u0000)

  • \b 后退鍵(\u0008)

  • \f 換頁(yè)符(\u000C)

  • \n 換行符(\u000A)

  • \r 回車鍵(\u000D)

  • \t 制表符(\u0009)

  • \v 垂直制表符(\u000B)

  • ' 單引號(hào)(\u0027)

  • " 雙引號(hào)(\u0022)

  • \ 反斜杠(\u005C)

  • \XXX 用三位八進(jìn)制數(shù)(0到377)代表一些特殊符號(hào),比如\251表示版權(quán)符號(hào)。

  • \xXX 用兩位十六進(jìn)制數(shù)(00到FF)代表一些特殊符號(hào),比如\xA9表示版權(quán)符號(hào)。

  • \uXXXX 用四位十六進(jìn)制的Unicode編號(hào)代表某個(gè)字符,比如\u00A9表示版權(quán)符號(hào)。

下面是最后三種字符的特殊寫法的例子。

"\251" // "?"
"\xA9" // "?"
"\u00A9" // "?"

如果非特殊字符前面使用反斜杠,則反斜杠會(huì)被省略。

"\a"
 // "a"

上面代碼表示a是一個(gè)正常字符,前面加反斜杠沒有特殊含義,則反斜杠會(huì)被自動(dòng)省略。

如果字符串的正常內(nèi)容之中,需要包含反斜杠,則反斜杠前需要再加一個(gè)反斜杠,用來對(duì)自身轉(zhuǎn)義。

"Prev \\ Next"
// "Prev \ Next"

字符串與數(shù)組

字符串可以被視為字符數(shù)組,因此可以使用數(shù)組的方括號(hào)運(yùn)算符,用來返回某個(gè)位置的字符(從0開始)。

var s = 'hello';

s[0] // "h"
s[1] // "e"
s[4] // "o"

// 也可以直接對(duì)字符串使用方括號(hào)運(yùn)算符
'hello'[1] // "e"

如果方括號(hào)中的數(shù)字超過字符串的范圍,或者方括號(hào)中根本不是數(shù)字,則返回undefined。

'abc'[3] // undefined
'abc'[-1] // undefined
'abc'["x"] // undefined

但是,字符串與數(shù)組的相似性僅此而已。實(shí)際上,字符串是類似數(shù)組的對(duì)象,且無法改變字符串之中的單個(gè)字符。

var s = 'hello';

delete s[0];
s // "hello"

s[1] = 'a';
s // "hello"

s[5] = '!';
s // "hello"

上面代碼表示,字符串內(nèi)部的單個(gè)字符無法改變和增刪,這些操作會(huì)默默地失敗。

length屬性返回字符串的長(zhǎng)度,該屬性也是無法改變的。

var s = 'hello';
s.length // 5

s.length = 3;
s.length // 5

s.length = 7;
s.length // 5

上面代碼表示字符串的length屬性無法改變,但是不會(huì)報(bào)錯(cuò)。

字符串也無法添加新屬性。

var s = "Hello World";
s.x = 123;
s.x // undefined

上面代碼為字符串s添加了一個(gè)x屬性,結(jié)果無效,總是返回undefined。

上面這些行為的原因是,在JavaScript內(nèi)部,變量s其實(shí)指向字符串“Hello World”的地址,而“Hello World”本身是一個(gè)常量,所以無法改變它,既不能新增,也不能刪除。另一方面,當(dāng)一個(gè)字符串被調(diào)用屬性時(shí),它會(huì)自動(dòng)轉(zhuǎn)為String對(duì)象的實(shí)例(參見《標(biāo)準(zhǔn)庫(kù)》一章),調(diào)用結(jié)束后,該對(duì)象自動(dòng)銷毀。這意味著,下一次調(diào)用字符串的屬性時(shí),實(shí)際是調(diào)用一個(gè)臨時(shí)生成的新對(duì)象,而不是上一次調(diào)用時(shí)生成的那個(gè)對(duì)象,所以取不到賦值在上一個(gè)對(duì)象的屬性。如果想要為字符串添加屬性,只有在它的原型對(duì)象String.prototype上定義(參見《面向?qū)ο缶幊獭芬徽拢?/p>

字符集

JavaScript使用Unicode字符集,也就是說在JavaScript內(nèi)部,所有字符都用Unicode表示。ECMAScript 3要求使用Unicode 2.1或以上版本,ECMAScript 5則要求使用Unicode 3及以上版本。

不僅JavaScript內(nèi)部使用Unicode儲(chǔ)存字符,而且還可以直接在程序中使用Unicode,所有字符都可以寫成"\uxxxx"的形式,其中xxxx代表該字符的Unicode編碼。比如,\u00A9代表版權(quán)符號(hào)。

var s = '\u00A9';
s // "?"

每個(gè)字符在JavaScript內(nèi)部都是以16位(即2個(gè)字節(jié))的UTF-16格式儲(chǔ)存。也就是說,JavaScript的單位字符長(zhǎng)度固定為2個(gè)字節(jié)。

但是需要注意的是,UTF-16有兩種長(zhǎng)度:對(duì)于U+0000到U+FFFF之間的字符,長(zhǎng)度為16位(即2個(gè)字節(jié));對(duì)于U+10000到U+10FFFF之間的字符,長(zhǎng)度為32位(即4個(gè)字節(jié)),而且前兩個(gè)字節(jié)在0xD800到0xDBFF之間,后兩個(gè)字節(jié)在0xDC00到0xDFFF之間。舉例來說,U+1D306對(duì)應(yīng)的字符為


上一篇: 下一篇: