關(guān)于我們
書單推薦
新書推薦
|
javascript+jQuery程序開發(fā)實用教程 本書循序漸進(jìn)地介紹了JavaScript開發(fā)技術(shù)。深入分析了JavaScript的核心知識,并在此基礎(chǔ)上詳細(xì)講解了jQuery框架的使用。此外,在每個重要知識點(diǎn)講解的后面,通過豐富典型的案例,使讀者進(jìn)一步鞏固所學(xué)的知識,提高實際開發(fā)能力。 本書內(nèi)容全面,實例豐富,易于理解,每章的內(nèi)容都簡潔緊湊,從最佳實踐的角度入手,為讀者更好地使用JavaScript及jQuery框架開發(fā)動態(tài)網(wǎng)頁提供了很好的指導(dǎo)。 本書適合高等院校計算機(jī)科學(xué)、軟件工程、數(shù)字媒體技術(shù)、通信及相關(guān)專業(yè)本、?谱鳛閯討B(tài)網(wǎng)頁程序設(shè)計相關(guān)課程教材使用,也是打算學(xué)習(xí)和正從事JavaScript+jQuery動態(tài)網(wǎng)頁設(shè)計的開發(fā)人員的教材或參考書。
目 錄
第1章 JavaScript概述1 1.1 JavaScript簡介2 1.1.1 JavaScript語言簡史2 1.1.2 JavaScript的特點(diǎn)2 1.1.3 JavaScript在頁面中的應(yīng)用3 1.2 HTML頁面中嵌入JavaScript的 方法4 1.2.1 頁面中定義JavaScript代碼5 1.2.2 鏈接外部JavaScript文件6 1.2.3 事件調(diào)用JavaScript程序7 1.3 JavaScript代碼的編輯工具8 1.3.1 純文本編輯器9 1.3.2 Dreamweaver9 課后小結(jié)11 習(xí)題11 第2章 JavaScript的數(shù)據(jù)類型和 運(yùn)算符13 2.1 JavaScript的語法規(guī)則14 2.1.1 區(qū)分大小寫14 2.1.2 代碼的格式14 2.1.3 代碼的注釋15 2.1.4 常量15 2.1.5 空白符和換行符16 2.1.6 標(biāo)識符17 2.1.7 保留字17 2.2 數(shù)據(jù)類型18 2.2.1 數(shù)值型18 2.2.2 字符串類型19 2.2.3 布爾型20 2.2.4 空值型20 2.2.5 未定義值21 2.2.6 類型轉(zhuǎn)換21 2.3 變量24 2.3.1 變量的命名24 2.3.2 變量的聲明24 2.3.3 變量的賦值26 2.4 運(yùn)算符27 2.4.1 算術(shù)運(yùn)算符28 2.4.2 賦值運(yùn)算符31 2.4.3 關(guān)系運(yùn)算符32 2.4.4 邏輯運(yùn)算符34 2.4.5 字符串運(yùn)算符36 2.4.6 其他運(yùn)算符37 2.4.7 運(yùn)算符的優(yōu)先級38 課后小結(jié)39 習(xí)題39 第3章 JavaScript的流程控制41 3.1 JavaScript中的選擇結(jié)構(gòu)42 3.1.1 if語句42 3.1.2 if...else語句42 3.1.3 嵌套if...else語句44 3.1.4 switch語句46 3.2 JavaScript中的循環(huán)結(jié)構(gòu)48 3.2.1 while語句48 3.2.2 do...while語句49 3.2.3 for語句50 3.2.4 for…in語句51 3.2.5 with語句52 3.2.6 break語句54 3.2.7 continue語句55 課后小結(jié)56 習(xí)題56 第4章 JavaScript中的函數(shù)59 4.1 函數(shù)的定義60 4.2 函數(shù)的調(diào)用61 4.3 函數(shù)的參數(shù)和返回值62 4.3.1 函數(shù)的參數(shù)62 4.3.2 函數(shù)的返回值66 4.4 函數(shù)的嵌套和遞歸67 4.5 變量的作用域70 4.6 JavaScript中的系統(tǒng)函數(shù)71 4.6.1 encodeURI函數(shù)71 4.6.2 decodeURI函數(shù)72 4.6.3 parseInt函數(shù)73 4.6.4 isNaN函數(shù)74 4.6.5 eval函數(shù)75 課后小結(jié)76 習(xí)題76 第5章 JavaScript中的對象77 5.1 對象的基本概念78 5.1.1 對象的屬性和方法78 5.1.2 對象的創(chuàng)建和刪除79 5.2 內(nèi)置對象81 5.2.1 String對象81 5.2.2 Number對象85 5.2.3 Math對象88 5.2.4 Date對象90 5.2.5 Array對象93 5.3 瀏覽器對象98 5.3.1 window對象99 5.3.2 document對象102 5.3.3 frame對象104 5.3.4 history對象106 5.3.5 location對象108 5.3.6 navigator對象109 課后小結(jié)111 習(xí)題111 第6章 JavaScript中的事件與事件 處理113 6.1 事件及事件處理程序114 6.1.1 事件和事件處理程序114 6.1.2 指定事件處理程序114 6.2 JavaScript的常用事件116 6.2.1 鍵盤事件116 6.2.2 鼠標(biāo)事件118 6.2.3 Load事件和Unload事件121 6.2.4 Focus事件和Blur事件123 6.2.5 Submit事件和Reset事件125 6.2.6 Change事件和Select事件127 6.2.7 Error事件129 課后小結(jié)129 習(xí)題130 第7章 JavaScript中的DOM編程131 7.1 XML基礎(chǔ)132 7.1.1 XML的文檔結(jié)構(gòu)132 7.1.2 XML解析器133 7.2 DOM編程基礎(chǔ)134 7.2.1 DOM文檔對象模型134 7.2.2 DOM中的節(jié)點(diǎn)135 7.3 使用DOM編程137 7.3.1 訪問節(jié)點(diǎn)137 7.3.2 創(chuàng)建新節(jié)點(diǎn)138 7.3.3 添加節(jié)點(diǎn)139 7.3.4 插入節(jié)點(diǎn)140 7.3.5 刪除節(jié)點(diǎn)142 課后小結(jié)145 習(xí)題145 第8章 CSS樣式表147 8.1 CSS簡介148 8.1.1 CSS的發(fā)展148 8.1.2 CSS的特點(diǎn)148 8.2 CSS的定義方式149 8.3 CSS的選擇器150 8.3.1 元素選擇器150 8.3.2 類選擇器152 8.3.3 ID選擇器153 8.3.4 屬性選擇器155 8.3.5 后代選擇器156 8.3.6 子元素選擇器158 8.3.7 相鄰兄弟選擇器159 8.4 CSS中的屬性161 8.4.1 字體屬性設(shè)置164 8.4.2 文本屬性設(shè)置168 8.4.3 背景屬性設(shè)置171 8.4.4 邊框?qū)傩栽O(shè)置175 8.4.5 邊距和填充距屬性設(shè)置178 課后小結(jié)179 習(xí)題179 第9章 JavaScript網(wǎng)頁特效181 9.1 文字特效182 9.1.1 跑馬燈效果182 9.1.2 打字效果183 9.1.3 文字大小變化效果185 9.1.4 升降文字效果187 9.2 圖片特效188 9.2.1 改變頁面中圖片的位置188 9.2.2 鼠標(biāo)拖動改變圖片大小190 9.2.3 不斷閃爍的圖片191 9.3 時間和日期特效192 9.3.1 標(biāo)題欄顯示分時問候語192 9.3.2 顯示當(dāng)前系統(tǒng)時間193 9.3.3 星期查詢功能195 9.4 窗體特效197 9.4.1 無邊框窗口自動關(guān)閉特效197 9.4.2 方向鍵控制窗口的特效199 9.4.3 改變窗體顏色200 9.5 鼠標(biāo)特效201 9.5.1 屏蔽鼠標(biāo)右鍵201 9.5.2 獲取鼠標(biāo)位置坐標(biāo)202 9.5.3 根據(jù)方向改變鼠標(biāo)外觀204 9.6 菜單特效205 9.6.1 左鍵彈出菜單205 9.6.2 下拉菜單207 9.6.3 滾動菜單208 9.7 警告和提示特效210 9.7.1 進(jìn)站提示信息210 9.7.2 單擊超鏈接顯示提示框211 9.7.3 顯示停留時間211 9.8 密碼特效213 9.8.1 彈出式密碼保護(hù)213 9.8.2 檢查密碼的格式合法性215 課后小結(jié)218 第10章 初識jQuery219 10.1 jQuery概述220 10.1.1 jQuery簡介220 10.1.2 jQuery的特點(diǎn)220 10.2 jQuery代碼編寫221 10.2.1 配置jQuery開發(fā)環(huán)境221 10.2.2 jQuery代碼編寫221 10.3 jQuery對象與DOM對象222 10.3.1 jQuery對象簡介222 10.3.2 jQuery對象與DOM對象 的相互轉(zhuǎn)換223 課后小結(jié)223 習(xí)題224 第11章 jQuery選擇器225 11.1 jQuery選擇器簡介226 11.2 jQuery選擇器的分類226 11.2.1 基本選擇器226 11.2.2 層次選擇器228 11.2.3 過濾選擇器229 11.2.4 表單選擇器235 11.3 jQuery中元素屬性的操作237 11.3.1 設(shè)置元素屬性237 11.3.2 刪除元素屬性238 11.4 jQuery中樣式類的操作239 11.4.1 添加樣式類239 11.4.2 移除樣式類241 11.4.3 交替樣式類242 11.5 jQuery中樣式屬性的操作243 11.5.1 讀取樣式屬性243 11.5.2 設(shè)置樣式屬性244 11.5.3 設(shè)置元素偏移245 11.6 jQuery中元素內(nèi)容的操作247 11.6.1 操作HTML代碼247 11.6.2 操作文本248 11.6.3 操作表單元素的值249 11.7 篩選與查找元素集中的元素250 課后小結(jié)255 習(xí)題255 第12章 jQuery中DOM的操作257 12.1 DOM樹結(jié)構(gòu)258 12.2 創(chuàng)建元素259 12.3 插入元素259 12.4 復(fù)制元素261 12.5 替換元素262 12.6 包裹元素263 12.7 刪除元素264 課后小結(jié)266 習(xí)題266 第13章 jQuery的事件處理267 13.1 jQuery中的事件處理機(jī)制268 13.2 jQuery中的頁面載入事件270 13.3 jQuery中的事件綁定272 13.3.1 bind()方法綁定事件272 13.3.2 one()方法綁定事件273 13.3.3 live()方法綁定事件274 13.4 jQuery中的事件移除276 13.5 jQuery中的事件冒泡278 13.6 jQuery中的模擬事件觸發(fā)操作279 13.7 jQuery中的合成事件282 13.7.1 hover()方法282 13.7.2 toggle()方法283 課后小結(jié)284 習(xí)題284 第14章 jQuery的動畫效果285 14.1 顯示與隱藏效果286 14.1.1 隱藏元素的hide()方法286 14.1.2 顯示元素的show()方法287 14.1.3 交替顯示隱藏元素288 14.2 滑動效果288 14.2.1 向上收縮效果289 14.2.2 向下展開效果290 14.2.3 交替伸縮效果290 14.3 淡入淡出效果291 14.3.1 淡入效果291 14.3.2 淡出效果293 14.3.3 交替淡入淡出效果294 14.3.4 不透明效果295 14.4 自定義動畫效果295 14.4.1 自定義動畫296 14.4.2 動畫隊列297 14.4.3 動畫停止和延時299 課后小結(jié)301 習(xí)題301 第15章 jQuery與Ajax303 15.1 Ajax簡介304 15.2 jQuery中的Ajax方法306 15.2.1 load()方法306 15.2.2 $.get()方法和$.post()方法307 15.2.3 $.getScript()方法和 $.getJSON()方法309 15.2.4 $.ajax()方法310 15.3 jQuery中的Ajax事件312 課后小結(jié)315 習(xí)題315 第16章 jQuery常用插件317 16.1 jQuery中的表單插件318 16.2 jQuery中的驗證插件320 16.3 jQuery中的右鍵菜單插件325 16.4 jQuery中的圖片彈窗插件329 課后小結(jié)332 習(xí)題333
第2章 JavaScript的數(shù)據(jù)類型和運(yùn)算符
學(xué)習(xí)目標(biāo): JavaScript腳本語言同其他程序設(shè)計語言一樣,有其自身的基本數(shù)據(jù)類型、表達(dá)式和算術(shù)運(yùn)算符。JavaScript有一套其自身的語法規(guī)則和基本框架結(jié)構(gòu),這是掌握J(rèn)avaScript語言和開發(fā)JavaScript程序的基礎(chǔ)。 內(nèi)容摘要: * 熟悉JavaScript的語法規(guī)則 * 掌握J(rèn)avaScript的數(shù)據(jù)類型 * 熟練掌握J(rèn)avaScript的運(yùn)算符 2.1 JavaScript的語法規(guī)則 所有的編程語言都有自己的一套語法規(guī)則,用來詳細(xì)說明如何使用該語言來編寫程序。JavaScript語言也不例外,為了確保JavaScript代碼正確運(yùn)行,必須遵守其語法規(guī)則。 說明:在編寫JavaScript代碼時,由于JavaScript不是一種可獨(dú)立運(yùn)行的語言,所以必須既關(guān)注JavaScript的語法規(guī)則,又要熟悉HTML的語法規(guī)則。 2.1.1 區(qū)分大小寫 JavaScript是嚴(yán)格區(qū)分大小寫的。例如,在程序代碼中定義一個標(biāo)識符computer(首字母小寫)的同時還可以定義一個標(biāo)識符Computer(首字母大寫),二者是完全不同的兩個符號。一般來說,在JavaScript中使用的大多數(shù)標(biāo)識符都采用小寫形式。如保留字全部都為小寫,但也有一些名稱采用大小寫組合方式,如onClick、onLoad、Date.getFullYear等。 2.1.2 代碼的格式 JavaScript中的代碼有其固定的格式。在JavaScript程序中,每條功能執(zhí)行語句的最后必須以分號結(jié)束。一個單獨(dú)的分號也可以表示一條語句,這種語句叫作空語句。為了使程序代碼整齊美觀,而采取的對齊或者縮進(jìn)文本的格式不是必需的。代碼可以按編寫者的意愿任意編排,只要每個詞之間用空格、制表符、換行符或者大括號、小括號等分隔符隔開就可以了。 在JavaScript程序中,一行可以寫一條語句,也可以寫多條語句。一行中寫多條語句時,語句之間使用分號分隔。當(dāng)在一行中只寫一條語句時,可以省略語句結(jié)尾的分號,此時以回車換行符作為語句的結(jié)束。例如,以下寫法都是正確的。 int c=10; //此行結(jié)尾的分號可以省略 int x=5; 或 c=10; x=5; //此行C=10;之后的分號不能省略 或 c=10 //語句結(jié)尾省略了分號 x=5; 說明:為了便于閱讀,即使一行只有一條語句,最好也在語句末尾加上一個分號。 如果一條語句被分成了一行以上,JavaScript會自動在該行結(jié)尾插入分號,使換行符之前的一行形成一條語句。例如,如果按以下格式輸入以下語句。 return false; 本來想表達(dá)的意圖是以下語句: return false; 但JavaScript在解釋時會在return之后自動插入一個分號,而形成以下的兩條語句: return; false; 從而產(chǎn)生代碼錯誤。因此,要注意同一條語句要寫在一行中,其間不要插入換行符。 但作為HTML標(biāo)簽屬性值的JavaScript腳本程序代碼的最后一條語句結(jié)尾處的分號可以省略,例如: <input type=button value=text onclick=”alert (new Date())”> 其中alert(new Date())后面就省略了分號。 2.1.3 代碼的注釋 為程序添加注釋可以起到解釋程序的作用,提高程序的可讀性。此外,還可以使用注釋來暫時屏蔽某些程序語句,讓瀏覽器暫時不要理會這些語句。等到需要的時候,只要取消注釋標(biāo)記,這些程序語句就又可以發(fā)揮作用了。 實際上,注釋是腳本的重要組成部分,注釋有利于提高腳本的可讀性。為程序加入適當(dāng)?shù)淖⑨,其他人就可以借助注釋來理解和維護(hù)腳本,從而有利于團(tuán)隊合作開發(fā),提高開發(fā)效率。 JavaScript可以使用兩種方式書寫注釋:單行注釋和多行注釋。 (1) 單行注釋。 單行注釋以兩個斜杠開頭,然后在該行中書寫注釋文字,注釋內(nèi)容不超過一行。例如: //這是對一個函數(shù)的定義 (2) 多行注釋。 多行注釋又叫注釋塊,它表示一段文字都是注釋的內(nèi)容。多行注釋以符號“/*”開頭,并以“*/”結(jié)尾,中間部分為注釋的內(nèi)容,注釋內(nèi)容可以跨越多行,但其中不能有嵌套的注釋。例如: /* 這是一個多行注釋,這一行是注釋的開始 函數(shù)定義的開始 …… 函數(shù)定義的結(jié)束*/ 2.1.4 常量 JavaScript的常量又稱為字面常量,是程序中不能改變的數(shù)據(jù),與數(shù)據(jù)類型相對應(yīng),有以下幾種常量。 1. 整型常量 整型常量可以使用十六進(jìn)制、八進(jìn)制和十進(jìn)制表示。十六進(jìn)制以0x或者0X開頭。如0x8a。八進(jìn)制必須以0開頭,如0167。十進(jìn)制的第一位不能是0(數(shù)字0除外),如235。 2. 實型常量 實型常量是由整數(shù)部分加小數(shù)部分表示,如11.376和689.78,實型常量也可以使用科學(xué)記數(shù)法來表示,如8E7、7e6。 3. 布爾常量 布爾常量不是真就是假。其值只有兩種:true和false。 4. 字符串常量 JavaScript中沒有單獨(dú)的字符常量,而只有表示由若干字符所組成的字符串常量。字符串常量使用單引號(')或雙引號(" ")引起來的若干字符,如"abc","a book"等。一個字符串中不包含任何字符也是可以的,其形式為" ",表示一個空字符串。 5.??null常量 JavaScript中的null常量表示一個變量所指向的對象為空值。 6.??undefined常量 undefined常量用于表示變量還沒有被賦值的狀態(tài)。null表示賦給變量的值為“空”,“空”是一個有特殊意義的值。而undefined則是表示還沒有對變量賦值,變量的值還處于未知狀態(tài)。 2.1.5 空白符和換行符 JavaScript會忽略程序中記號之間的空格、制表符和換行符,除非它們是字符串常量的組成部分。這里的記號就是指一個關(guān)鍵字、變量名、數(shù)字、函數(shù)名或者其他各種實體。具體來說,可以分為以下3種情況。 (1) 如果標(biāo)識符、運(yùn)算符之間有多于一個的空白字符,對于解釋器來講,多個空白字符相當(dāng)于一個空白字符的分隔作用。例如,下面的兩行代碼是等價的: var name="王五"; var name = "王五"; (2) 如果在一個記號中插入了空格或制表符,JavaScript就會將它分成兩個記號。例如,area是一個變量名,而ar ea則是兩個獨(dú)立的變量ar和ea。 (3) 如果字符串常量本身包含空格,如“cell phone”,JavaScript解釋器在解釋代碼的過程中會保留這些空格。 說明:由于JavaScript忽略出現(xiàn)在其他地方的空白,因此,可以自由地縮進(jìn)代碼行,可以采用整齊、一致的方式自由安排程序的格式,以便于閱讀和理解程序。 2.1.6 標(biāo)識符 標(biāo)識符是指JavaScript中定義的符號,如變量名、函數(shù)名、數(shù)組名等。在JavaScript中,合法的標(biāo)識符的命名規(guī)則和Java語言以及其他許多編程語言的命名規(guī)則相同,即標(biāo)識符可以由大小字母、數(shù)字、下劃線(_)和美元符號($)組成,但標(biāo)識符不能以數(shù)字開頭,不能是JavaScript中的保留字。 例如,下面的幾個標(biāo)識符是合法的: username user_name _userName $username 下面的幾個標(biāo)識符是非法的: int //int是JavaScript中的保留字 78.2//78.2是由數(shù)字開頭,并且標(biāo)識符中不能含有點(diǎn)號(.) Hello world//標(biāo)識符中不能含有空格 2.1.7 保留字 每種程序語言都有自己的保留字,不能將它們用作程序中的標(biāo)識符。JavaScript同其他程序語言一樣,也擁有自己的保留字。JavaScript保留字是指在JavaScript語言中有特定含義,成為JavaScript語法的一部分的那些字符。它們只能在JavaScript語言規(guī)定的場合中使用,而不能用作變量名、函數(shù)名等標(biāo)識符。表2-1列出了JavaScript的保留字。 表2-1 保留的JavaScript的關(guān)鍵字 abstract do if package throws boolean double implements protected transient break else import public true byte extends in return try case false instanceof short var catch final int static void char finally interface super while class float long switch with const for native synchronized continue function new this default goto null throw 說明:在最新的ECMAScript V4標(biāo)準(zhǔn)(草稿)中還將is、namespace和use作為了保留字。使用時應(yīng)該也避免使用這幾個保留字。 除了不能將保留字用作標(biāo)識符外,還有很多其他的詞也不能被用作標(biāo)識符。它們是被JavaScript用作屬性名、方法名和構(gòu)造函數(shù)名的詞。如果用這些名字創(chuàng)建了一個變量或函數(shù),就會重定義已經(jīng)存在的屬性或函數(shù)。編寫程序時,在給變量或函數(shù)命名時不應(yīng)該和這些全局變量或函數(shù)的名字相同。另外,還要避免定義以兩個下劃線開頭的標(biāo)識符,因為JavaScript常常將這種形式的標(biāo)識符用于內(nèi)部。 2.2 數(shù) 據(jù) 類 型 JavaScript中的數(shù)據(jù)類型可以分為兩類:基本數(shù)據(jù)類型和引用數(shù)據(jù)類型。JavaScript的基本數(shù)據(jù)類型包括數(shù)值型、字符串型和布爾型以及兩個特殊的數(shù)據(jù)類型(空值和未定義)。另外,還支持?jǐn)?shù)組、函數(shù)、對象等引用數(shù)據(jù)類型。由于JavaScript采用弱類型的變量聲明形式,因而變量在使用前可以先不作聲明,而是在使用或賦值時再確定其數(shù)據(jù)類型。 2.2.1 數(shù)值型 數(shù)值型(number)是最基本的數(shù)據(jù)類型,可以用于完成數(shù)學(xué)運(yùn)算。JavaScript與其他程序設(shè)計語言的不同之處在于,它并不區(qū)分整型數(shù)值和浮點(diǎn)型數(shù)值。在JavaScript中,所有數(shù)字都是由浮點(diǎn)型表示的。 如果一個數(shù)值直接出現(xiàn)在JavaScript程序中時,稱為數(shù)值直接量。JavaScript支持的數(shù)值直接量的形式有以下幾種。 1. 整型直接量 一個整型直接量可以是十進(jìn)制、十六進(jìn)制和八進(jìn)制數(shù)。例如,下面列出了幾個整型直接量: 25 //整數(shù)25的十進(jìn)制表示 037//整數(shù)31的八進(jìn)制表示 0x1A//整數(shù)26的十六進(jìn)制表示 2. 浮點(diǎn)型直接量 浮點(diǎn)型直接量即帶小數(shù)點(diǎn)的數(shù)。它既可以使用常規(guī)表示法,也可以使用科學(xué)記數(shù)法來表示。使用科學(xué)記數(shù)法表示時,指數(shù)部分是在一個整數(shù)后跟一個“e”或“E”,它可以是一個有符號的數(shù)。下面是一些浮點(diǎn)型直接量: 3.1415//常規(guī)表示法 -3.1E12//常規(guī)表示法 .1e12 //科學(xué)記數(shù)法,該數(shù)等于0.1×1012 52E-12//科學(xué)記數(shù)法,該數(shù)等于52×10-12 說明:一個浮點(diǎn)數(shù)組必須包含一個數(shù)字、一個小數(shù)點(diǎn)或“e”(或“E”)。 * 特殊數(shù)值 JavaScript中還定義了一些表示特殊數(shù)值的常量,如表2-2所示。 表2-2 JavaScript中特殊的數(shù)值常量 常 量 含 義 Infinity 表示正無窮大的特殊值 NaN 特殊的非數(shù)字值 Number.MAX_VALUE 可表示的最大值 Number.MIN_VALUE 可表示的最小負(fù)數(shù)(與零最接近的值) Number.NaN 特殊的非數(shù)字值 Number.POSITIVE_INFINITY 表示正無窮大的特殊值 Number.NEGATIVE_INFINITY 表示負(fù)無窮大的特殊值 2.2.2 字符串類型 字符串是由字符、數(shù)字、標(biāo)點(diǎn)符號等組成的序列,是JavaScript中用來表示文本的數(shù)據(jù)類型。 說明:JavaScript和C以及C++、Java不同的是,它沒有char這樣的字符數(shù)據(jù)類型,要表示單個字符,必須使用長度為1的字符串。 1. 字符串直接量 字符串直接量是由單引號或雙引號括起來的一串字符,其中可以包含0個或多個字符。下面為一些字符串直接量: "fish" '李白' "5467" "a line" "That’s very good. " '"What are you doing?", he asked.' 字符串直接量兩邊的引號必須相同,即對一個字符串來說,要么兩邊都是雙引號,要么兩邊都是單引號;否則一邊加單引號,一邊加雙引號會產(chǎn)生錯誤。此外,由單引號定界的字符串中可以含有雙引號,由雙引號定界的字符串中也可以含有單引號,如上面的最后一行即是單引號中包含了雙引號來定界字符串。 說明:HTML使用雙引號來定界字符串,由于要在HTML文檔中使用JavaScript,所以最好養(yǎng)成在JavaScript語句內(nèi)使用單引號的習(xí)慣,這可以避免與HTML代碼沖突。 2. 轉(zhuǎn)義字符 有些包含在字符串中的字符,由于在JavaScript 語法上已經(jīng)有了特殊用途,而不能以常規(guī)的形式直接加入這些符號。為了解決這個問題,JavaScript專門為這類字符提供了一種特殊的表達(dá)方式,稱為轉(zhuǎn)義字符。 轉(zhuǎn)義字符以反斜杠(\)開始,后面跟一些符號。這些由反斜杠開頭的字符表示的是控制字符而不是字符原來的含義。表2-3列出了JavaScript支持的轉(zhuǎn)義字符及其代表的實際意義。 表2-3 JavaScript中的轉(zhuǎn)義字符 字 符 含 義 \0 NULL字符(\u0000) \b 退格符(\u0008) \t 水平制表符(\u0009) \n 換行符(\u000A) \v 垂直制表符(\u000B) \f 換頁符(\uDDCC) \r 回車符(\uDDCD) \" 雙引號(\u0022) \' 撇號或單引號(\u0027) \\ 反斜杠符\ (\u005C) \xXX 由兩個十六進(jìn)制數(shù)值XX指定的 Latin-1 編碼字符,如 \xA9 即是版權(quán)符號的十六進(jìn)制碼 \uXXXX 由4位十六進(jìn)制數(shù)的?XXXX指定的Unicode 字符,如 \u00A9 即是版權(quán)符號的 Unicode 編碼 \XXX 由1~3位八進(jìn)制數(shù)(從1~377)指定的 Latin-1 編碼字符,如 \251 即是版權(quán)符號的八進(jìn)制碼(ECMAScript V3不支持,不要使用這種轉(zhuǎn)義序列) 2.2.3 布爾型 布爾型主要用來代表一種狀態(tài),其數(shù)據(jù)的值只有兩個,由布爾型直接量true和false來表示,分別代表真和假。 例如, a = =1 這行代碼測試了變量a的值是否和數(shù)值1相等,如果相等,結(jié)果就是布爾值true;否則結(jié)果就是false。 2.2.4 空值型 JavaScript中還有一個特殊的空值型數(shù)據(jù),用關(guān)鍵字null來表示。它是JavaScript中的一種對象類型,常常被看作對象類型的一個特殊值,即代表“無對象”的值。如果一個變量的值為null,那么就表示它的值不是有效的對象、數(shù)字、字符串和布爾值。 null可用于初始化變量,以避免產(chǎn)生錯誤,也可用于清除變量的內(nèi)容,從而釋放與變量相關(guān)聯(lián)的內(nèi)存空間。當(dāng)把null賦值給某個變量后,這個變量中就不再保存任何有效的數(shù)據(jù)了。 2.2.5 未定義值 JavaScript中還有一個特殊的未定義值,用全局變量undefined來表示。當(dāng)使用了一個并未聲明的變量或聲明了變量但還沒有為變量賦值時,將返回 undefined 值。 null和undefined既有區(qū)別又有聯(lián)系。null是JavaScript中的保留字,而undefined卻不是JavaScript中的保留字,而是在ECMAScript V3標(biāo)準(zhǔn)中系統(tǒng)預(yù)定義的一個全局變量。 雖然undefined和null值不同,但是= =運(yùn)算符卻將二者看作相等。如果想?yún)^(qū)分判斷null和undefined,那么應(yīng)該使用測試一致性的運(yùn)算符= = =或typeof運(yùn)算符。 2.2.6 類型轉(zhuǎn)換 JavaScript是一種松散類型的程序設(shè)計語言,并沒有嚴(yán)格的規(guī)定變量的數(shù)據(jù)類型,也就是說,已經(jīng)定義數(shù)據(jù)類型的變量,可以通過相應(yīng)的方法進(jìn)行數(shù)據(jù)類型的轉(zhuǎn)換。 例如,如果字符串“5”和數(shù)字10進(jìn)行算術(shù)加法運(yùn)算,就需要首先將字符串“5”轉(zhuǎn)換為數(shù)值型。 為了適應(yīng)不同的情況,JavaScript提供了兩種數(shù)據(jù)類型轉(zhuǎn)換的方法:一種方法是將整個值從一種類型轉(zhuǎn)換為另一種數(shù)據(jù)類型(稱為基本數(shù)據(jù)類型轉(zhuǎn)換);另一種方法是從一個值中提取另一種類型的值,并完成類型轉(zhuǎn)換。 JavaScript提供了3個方法實現(xiàn)基本數(shù)據(jù)類型之間的轉(zhuǎn)換。 * String():將其他類型的值轉(zhuǎn)換為字符串,如String(123)將數(shù)值123轉(zhuǎn)換為字符串"123"。 * Number():將其他類型的值轉(zhuǎn)換為數(shù)值型數(shù)據(jù)。例如,Number(false)可以將布爾型直接量false轉(zhuǎn)換為數(shù)值0。 * Boolean():將其他類型的值轉(zhuǎn)換為布爾型值。除0、NaN、null、undefined、" " (空字符串)被轉(zhuǎn)換為false外,所有其他值都被轉(zhuǎn)換為true。 實例2.1 JavaScript基本數(shù)據(jù)類型轉(zhuǎn)換。其代碼如下: <HTML> <HEAD> <TITLE>基本數(shù)據(jù)類型轉(zhuǎn)換</TITLE> <SCRIPT Language="JavaScript"> var num1 ="100"; var num2="200"; document.write("num1='100' num2='200'"); var result=Number(num1)+Number(num2); document.write("<br>數(shù)值的運(yùn)算結(jié)果為:",result); var st=String(num1); result=st+200; document.write("<br>字符串與數(shù)字的運(yùn)算結(jié)果為:",result); var bo=Boolean(num1); result=bo+num2; document.write("<br>字符串與布爾值的運(yùn)算結(jié)果為:",result); result=bo+200; document.write("<br>數(shù)值與布爾值的運(yùn)算結(jié)果為:",result); document </SCRIPT> </HEAD> <BODY> </BODY> </HTML> 將頁面保存為shuju.htm文件,在瀏覽器中執(zhí)行,結(jié)果如圖2-1所示。 圖2-1 基本數(shù)據(jù)類型程序運(yùn)行結(jié)果 JavaScript中還提供了3種通過提取數(shù)據(jù)進(jìn)行數(shù)據(jù)類型轉(zhuǎn)換的方法,即parseInt()、parseFloat()和eval()。 (1) 提取整數(shù)的parseInt()方法。 parseInt()方法用于將字符串轉(zhuǎn)換為整數(shù),其語法格式如下: parseInt(numString,[radix]) 其中,第一個參數(shù)為必選項,指定要轉(zhuǎn)化為整數(shù)的字符串。當(dāng)僅包括這個參數(shù)時,表示將字符串轉(zhuǎn)換為十進(jìn)制整數(shù)。第二個參數(shù)是可選的,使用該參數(shù)能夠完成八進(jìn)制、十六進(jìn)制等數(shù)據(jù)的轉(zhuǎn)換。但不管指定按哪一種進(jìn)制轉(zhuǎn)換,parseInt()方法總是以十進(jìn)制值返回結(jié)果。 例如,parseInt("123abc45")的返回值是123。而parseInt("100abc",8)表示將"100abc"按八進(jìn)制數(shù)進(jìn)行轉(zhuǎn)化,由于“abc”不是數(shù)字,所以實際是將八進(jìn)制數(shù)100轉(zhuǎn)換為十進(jìn)制,轉(zhuǎn)換的結(jié)果為十進(jìn)制數(shù)64。 (2) 提取浮點(diǎn)數(shù)的parseFloat()方法。 parseFloat()方法用于將字符串轉(zhuǎn)換為浮點(diǎn)數(shù),其語法格式如下: parseFloat(numString) 該方法與parseInt()方法相似,不同之處在于parseFloat()方法能夠轉(zhuǎn)換浮點(diǎn)數(shù)。其參數(shù)即為要轉(zhuǎn)換的字符串,如果字符串不以數(shù)字開始,則parseFloat()方法將返回NaN,表示所傳遞的參數(shù)不能轉(zhuǎn)換為一個浮點(diǎn)數(shù)。 例如,parseFloat("12.3abc")轉(zhuǎn)化的結(jié)果為12.3。 (3) 計算表達(dá)式值的eval()方法。 eval()方法用于計算字符串表達(dá)式或語句的值,其語法格式如下: eval(codeString) 其參數(shù)是由JavaScript語句或表達(dá)式組成的一個字符串,eval()方法能夠計算出該字符串表達(dá)式的值。 例如,eval("2+3*5-8")可以計算表達(dá)式2+3*5-8的值,并返回計算結(jié)果9。 實例2.2 JavaScript數(shù)據(jù)類型轉(zhuǎn)換方法的使用。其代碼如下: <HTML> <HEAD> <TITLE>數(shù)據(jù)類型轉(zhuǎn)換方法的使用</TITLE> <SCRIPT Language="JavaScript"> var s1 ="100abc"; var s2="20.5"; document.write("s1=\"100abc\" s2=\"20.05\""); num1=parseInt(s1); num2=parseInt(s2); document.write("<br>將s1轉(zhuǎn)換為整型后的結(jié)果為:",num1); document.write("<br>將s2轉(zhuǎn)換為整型后的結(jié)果為:",num2); num1=parseInt(s1,8); num2=parseInt(s1,2); document.write("<br>將s1作為八進(jìn)制數(shù)轉(zhuǎn)換的結(jié)果為:",num1); document.write("<br>將s1作為二進(jìn)制數(shù)轉(zhuǎn)換的結(jié)果為:",num2); num2=parseFloat(s2); document.write("<br>將s2轉(zhuǎn)換為浮點(diǎn)型的結(jié)果為:",num2); result=eval("100"+s2); document.write("<br>eval(\"100\"+s2)的返回值為:",result); </SCRIPT> </HEAD> <BODY> </BODY> </HTML> 將頁面保存為tranferfun.htm文件,在瀏覽器中執(zhí)行,結(jié)果如圖2-2所示。 圖2-2 數(shù)據(jù)類型轉(zhuǎn)換方法的使用實例的運(yùn)行效果 程序中eval("100"+s2)在執(zhí)行時,是先進(jìn)行字符串“100”和字符串s2的連接運(yùn)算,然后再計算整個字符串的值,而不是分別將“100”和s2轉(zhuǎn)化為數(shù)值再進(jìn)行算術(shù)加法運(yùn)算,所以最后的結(jié)果為10020.5,而不是120.5。 2.3 變 量 與其他編程語言一樣,JavaScript也是采用變量存儲數(shù)據(jù)的。變量就是程序中一個已命名的存儲單元。變量的主要作用是存取數(shù)據(jù)和提供存放信息的容器。對于變量必須明確變量的名稱、類型和變量的值這3方面的特性。 2.3.1 變量的命名 JavaScript中的變量命名要遵守以下幾點(diǎn)規(guī)則。 (1) 變量名必須以大寫字母、小寫字母或下劃線(_)開頭,其他的字符可以是字母、下劃線或數(shù)字。變量名中不允許出現(xiàn)空格、“+”號、“-”號等其他符號。 (2) 不能使用JavaScript中的保留字作為變量名,如var、int、double、true等都不能作為變量的名稱。 (3)??JavaScript變量名是區(qū)分大小寫的,因此在使用時必須確保大小寫相同。變量名大小寫不同的變量,如name、Name、NAME,將被視為不同的變量。 (4)??JavaScript變量命名規(guī)范與Java類似,對于變量名為一個單詞的,則建議其為小寫字母,如area;對于變量名由兩個或兩個以上的單詞組成的,則建議第二個和第二個以后的單詞的首字母為大寫,如userName。 (5) 在對變量命名時,最好把變量名與其代表的內(nèi)容含義對應(yīng)起來,以便能方便地區(qū)分變量的含義,如name變量就很容易讓人明白其代表的內(nèi)容。 例如,下面的變量名是合法的: user_name $user_name _user_name my_variable_example myVariableExample 而下面的變量名是不合法的: %user_name 1user_name $user_name ~user_name +user_name 2.3.2 變量的聲明 JavaScript是弱類型語言,因此它不像大多數(shù)編程語言那樣強(qiáng)制限定每種變量的類型,即在創(chuàng)建一個變量時可以不指定該變量將要存放何種類型的信息。 JavaScript中聲明變量的方式有兩種:一種是使用關(guān)鍵字var顯式聲明變量;另一種是使用賦值語句隱式聲明變量。 說明:為了提高程序的可讀性和正確性,建議對所有變量都使用顯式聲明。 1. 顯式聲明變量 格式1: var 變量名1[,變量名2,變量名3,…] 下面是使用格式1聲明變量的示例代碼: var i; var a,b,c; var name,password; 在聲明變量的同時,可以為變量指定一個值,這個過程稱為變量的初始化。但該過程不是強(qiáng)制性的,可以聲明一個變量,但不初始化這個變量,此時,該變量的數(shù)據(jù)類型為undefined。 格式2: var 變量名1=值1[,變量名2=值2 變量名3=值3,…] 下面是使用格式2聲明變量的示例代碼: var name='張三'; var i=0,j=1; var flag=true; 在為變量賦初值后,JavaScript會自動根據(jù)所賦的值而確定變量的類型。例如,上面的變量name會自動定義為字符串型,變量i和j為數(shù)值型,變量flag為布爾型。 2. 隱式聲明變量 在JavaScript中聲明變量時,還可以在使用格式2聲明變量時省略關(guān)鍵字var,即直接在賦值語句中隱式地聲明變量。使用賦值語句隱式聲明變量的格式為: 格式3: 變量名=值; 例如,之前的變量聲明語句,也可以寫成以下格式: name='張三'; i=0;j=1; flag=true; 說明:在一行中有多個賦值語句時,之間要用分號分隔。 實例2.3 JavaScript中變量的聲明。其代碼如下: <HTML> <HEAD> <TITLE>變量聲明</TITLE> <SCRIPT Language="JavaScript"> var name;//顯式聲明變量但未初始化變量 var age=20;//顯式聲明變量并初始化變量 sex='男';//使用賦值語句隱式聲明變量 document.writeln("變量name的初始值:",name); document.writeln("<br>變量name的類型是:",typeof(name)); document.writeln("<br>變量age的初始值:",age); document.writeln("<br>變量age的類型是:",typeof(age)); document.writeln("<br>變量sex的初始值:",sex); document.writeln("<br>變量sex的類型是:",typeof(sex)); </SCRIPT> </HEAD> <BODY> </BODY> </HTML> 將頁面保存為tranferfun.htm文件,在瀏覽器中執(zhí)行,結(jié)果如圖2-3所示。 圖2-3 實例2.3的運(yùn)行結(jié)果(顯式聲明的變量的值) 說明:為了提高程序的可讀性和正確性,建議對所有的變量都使用關(guān)鍵字var顯式聲明變量,這樣可以區(qū)分變量和直接量。此外,全局變量必須使用var關(guān)鍵字。 2.3.3 變量的賦值 在程序中任何位置需要改變變量的值時,都可以使用賦值語句來為變量賦值。賦值語句由變量名、等號以及確定的值組成。賦值語句的格式與格式3相同,即: 格式4: 變量名=值; 格式4與格式3的不同之處是,格式3中的變量名一般是在程序中第一次出現(xiàn),表示在聲明變量的同時給變量賦值,而格式4中的變量名可以是在程序中已經(jīng)出現(xiàn)過的變量,經(jīng)常是改變變量的值,甚至還能改變變量的類型。 實例2.4 JavaScript中變量的賦值。其代碼如下: <HTML> <HEAD> <TITLE>變量賦值</TITLE> <SCRIPT Language="JavaScript"> salary=1000; //在聲明變量salary的同時給變量賦值 document.writeln("變量salary的初始值:",salary); document.writeln("<br>變量salary的類型是:",typeof(salary)); salary=1500; //使用賦值語句改變變量salary的值 document.writeln("<br>變量salary改變后的值:",salary); document.writeln("<br>變量salary的類型是:",typeof(salary)); salary='我的工資' //使用賦值語句將變量salary的類型由數(shù)值型變?yōu)榱俗址?br /> document.writeln("<br>變量salary改變類型后的值:",salary); document.writeln("<br>變量salary改變類型后的類型是:",typeof(salary)); </SCRIPT> </HEAD> <BODY> </BODY> </HTML> 將頁面保存為var2.htm文件,在瀏覽器中執(zhí)行,結(jié)果如圖2-4所示。 圖2-4 實例2.4的運(yùn)行結(jié)果(顯示每次賦值的變量的值) 2.4 運(yùn) 算 符 運(yùn)算符是完成操作的一系列符號,運(yùn)算符用于將一個或幾個數(shù)據(jù)按照某種規(guī)則進(jìn)行運(yùn)算,并產(chǎn)生一個操作結(jié)果,它必須作用在數(shù)據(jù)上才有效,使用運(yùn)算符的數(shù)據(jù)被稱為操作數(shù)。 根據(jù)運(yùn)算類別,可以將JavaScript中的運(yùn)算符分為以下6類。 * 算術(shù)運(yùn)算符。 * 賦值運(yùn)算符。 * 關(guān)系運(yùn)算符。 * 邏輯運(yùn)算符。 * 字符串運(yùn)算符。 * 其他運(yùn)算符。 根據(jù)操作數(shù)的個數(shù),可以將JavaScript中的運(yùn)算符分為3類。 * 單目運(yùn)算符:只作用于一個數(shù)據(jù)的運(yùn)算符。 * 雙目運(yùn)算符:作用于兩個數(shù)據(jù)上的運(yùn)算符。 * 三目運(yùn)算符:作用于3個數(shù)據(jù)上的運(yùn)算符。 說明:除了條件運(yùn)算符是三目運(yùn)算符外,JavaScript中其他的運(yùn)算符都是雙目或者單目運(yùn)算。 雙目運(yùn)算符基本語法格式如下: 操作數(shù)1 運(yùn)算符 操作數(shù)2 例如,100+200、“This is”+“a book.”等。 雙目運(yùn)算符包括+(加)、-(減)、*(乘)、/(除)、%(取模)、|(按位或)、&(按位與)、<<(左移)、>>(右移)、>>>(右移,零填充)等。 單目運(yùn)算符是只需要一個操作數(shù)的運(yùn)算符,此時運(yùn)算符可能在運(yùn)算符前或運(yùn)算符后;菊Z法格式如下: 操作數(shù)1 運(yùn)算符 或 運(yùn)算符 操作數(shù)1 單目運(yùn)算符包括-(單目減)、!(邏輯非)、~(取補(bǔ))、++(遞加1)、--(遞減1)等。 2.4.1 算術(shù)運(yùn)算符 JavaScript中的算術(shù)運(yùn)算符如表2-4所示。 表2-4 JavaScript中的算術(shù)運(yùn)算符 運(yùn)算符 說 明 + 加法運(yùn)算符 - 減法運(yùn)算符 * 乘法運(yùn)算符 / 除法運(yùn)算符 % 取模運(yùn)算符,即計算兩個數(shù)相除的余數(shù) - 取反運(yùn)算符,即將運(yùn)算數(shù)的符號變成相反的 續(xù)表 運(yùn)算符 說 明 ++ 增量運(yùn)算符,遞加1并返回數(shù)值或返回數(shù)值后遞加1,取決于運(yùn)算符的位置在操作數(shù)之前還是之后 -- 減量運(yùn)算符,遞減1并返回數(shù)值或返回數(shù)值后遞減1,取決于運(yùn)算符的位置在操作數(shù)之前還是之后 1. 加(+)、減(-)、乘(*)、除(/)運(yùn)算符 加(+)、減(-)、乘(*)、除(/)運(yùn)算符符合日常的數(shù)學(xué)運(yùn)算規(guī)則,兩邊的運(yùn)算數(shù)的類型要求是數(shù)值型的(+也可用于字符串連接操作),如果不是數(shù)值型的,JavaScript會將它們自動轉(zhuǎn)換為數(shù)值型。 2. 取模運(yùn)算符(%) 取模運(yùn)算符也稱為取余運(yùn)算符,其兩邊的運(yùn)算數(shù)的類型也必須是數(shù)值型的。A%B的結(jié)果是數(shù)A除以數(shù)B后得到的余數(shù),如11%2=1。 以上的運(yùn)算符都是雙目運(yùn)算符,使用這些運(yùn)算符時一定要特別小心,有可能會出現(xiàn)NaN或其他錯誤的結(jié)果,如果除數(shù)為0就會出現(xiàn)問題。 3. 取反運(yùn)算(-) 取反運(yùn)算的作用就是將值的符號變成相反的,即把一個正值轉(zhuǎn)換成相應(yīng)的負(fù)值;反之亦然。例如,x=5,則-x=-5。該運(yùn)算符是單目運(yùn)算符,同樣也要求操作都是數(shù)值型的,如果不是數(shù)值型的,會被自動轉(zhuǎn)換成數(shù)值型。 4. 增量運(yùn)算符(++)和減量運(yùn)算符(--) 這兩種運(yùn)算符實際上是代替變量x進(jìn)行x=x+1和x=x-1兩種操作的簡單而有效的方法,但是該運(yùn)算符是置于變量之前和置于變量之后所得到的結(jié)果是不同的。 將運(yùn)算符置于變量之前,表示先對變量進(jìn)行加1或減1操作,然后再在表達(dá)式中進(jìn)行計算。 例如,如果x=5,則++x+4=10,這是因為x先加1得到6,然后再進(jìn)行加法運(yùn)算,所以得到結(jié)果10,這相當(dāng)于先執(zhí)行了x=x+1,然后執(zhí)行x+4。 同理,如果x=5,則--x+4=8,這是因為x先減1得到4,然后再進(jìn)行加法運(yùn)算,所以得到結(jié)果8,這相當(dāng)于先執(zhí)行了x=x-1,然后執(zhí)行x+4。 如果將運(yùn)算符置于變量之后,表示先將變量的值在表達(dá)式中參加運(yùn)算后,再進(jìn)行加1或減1。 例如,如果x=5,則x+++4=9,這是因為x的值先與4相加得到9,然后x才加1得到6,這相當(dāng)于先執(zhí)行了x+4,然后再執(zhí)行x=x+1。 同理,如果x=5,則x--+4=9,這是因為x的值也是先與4相加得到9,然后x才減1得到4,這相當(dāng)于先執(zhí)行了x+4,然后再執(zhí)行x=x-1。 這兩個運(yùn)算符都是單目運(yùn)算符,同樣也要求操作數(shù)都是數(shù)值型的,如果不是數(shù)值型的,會被自動轉(zhuǎn)換成數(shù)值型。 實例2.5 JavaScript中增量和減量運(yùn)算符的使用。其代碼如下: <HTML> <HEAD> <TITLE>增量運(yùn)算符和減量運(yùn)算符的使用</TITLE> <SCRIPT Language="JavaScript"> var a=5; var b; document.write("a=",a); b=a++; document.write("<br>執(zhí)行b=a++后,a=",a); document.write(" b=",b); a=5; document.write("<br>a=",a); b=++a; document.write("<br>執(zhí)行b=++a后,a=",a); document.write(" b=",b); a=5; document.write("<br>a=",a); b=a--; document.write("<br>執(zhí)行b=a--后,a=",a); document.write(" b=",b); a=5; document.write("<br>a=",a); b=--a; document.write("<br>執(zhí)行b=--a后,a=",a); document.write(" b=",b); a=5; document.write("<br>a=",a); b=a+++5; document.write("<br>執(zhí)行b=a+++5后,a=",a); document.write(" b=",b); a=5; document.write("<br>a=",a); b=++a+5; document.write("<br>執(zhí)行b=++a+5后,a=",a); document.write(" b=",b); a=5; document.write("<br>a=",a); b=a--+5; document.write("<br>執(zhí)行b=a--+5后,a=",a); document.write(" b=",b); a=5; document.write("<br>a=",a); b=--a+5; document.write("<br>執(zhí)行b=--a+5后,a=",a); document.write(" b=",b); </SCRIPT> </HEAD> <BODY> </BODY> </HTML> 將頁面保存為var3.htm文件,在瀏覽器中執(zhí)行,結(jié)果如圖2-5所示。 圖2-5 增量和減量運(yùn)算符實例的運(yùn)行結(jié)果 2.4.2 賦值運(yùn)算符 在之前創(chuàng)建變量時,實際上已經(jīng)使用了賦值運(yùn)算符(=)給變量賦初值。賦值運(yùn)算符(=)的作用是將其右邊的表達(dá)式的值給左邊的變量。 例如,a=5+1就表示把賦值號右邊的表達(dá)式5+1計算出來的結(jié)果值6給左邊的變量a,這樣變量a的值就是6。 賦值運(yùn)算符(=)還可以用來給多個變量指定同一個值,如a=b=c=1,執(zhí)行該語句后,變量a、b、c的值都為1。 除了直接賦值外,還可以在賦值運(yùn)算符(=)之前加上其他的運(yùn)算符,構(gòu)成復(fù)合賦值運(yùn)算符。表2-5列出了常用的復(fù)合賦值運(yùn)算符。 表2-5 JavaScript中的復(fù)合賦值運(yùn)算符 運(yùn)算符 說 明 = 賦值運(yùn)算符,將運(yùn)算符左邊的變量設(shè)置為右邊表達(dá)式的值 += 加法賦值運(yùn)算符,將運(yùn)算符左邊的變量加上右邊表達(dá)式的值,即a+=b,等同于a=a+b -= 減法賦值運(yùn)算符,將運(yùn)算符左邊的變量減去右邊表達(dá)式的值,即a-=b,等同于a=a-b *= 乘法賦值運(yùn)算符,將運(yùn)算符左邊的變量乘以右邊表達(dá)式的值,即a*=b,等同于a=a*b /= 除法賦值運(yùn)算符,將運(yùn)算符左邊的變量除以右邊表達(dá)式的值,即a/=b,等同于a=a/b %= 取模賦值運(yùn)算符,將運(yùn)算符左邊的變量用右邊表達(dá)式的值求模,即a%=b,等同于a=a%b 實例2.6 JavaScript中賦值運(yùn)算符的使用。其代碼如下: <HTML> <HEAD> <TITLE>賦值運(yùn)算符的使用</TITLE> <SCRIPT Language="JavaScript"> var a=10; document.write("a=",a); a+=3; document.write(" 執(zhí)行a+=3后,a=",a); a=10; document.write("<br>a=",a); a-=3; document.write(" 執(zhí)行a-=3后,a=",a); a=10; document.write("<br>a=",a); a*=3; document.write(" 執(zhí)行a*=3后,a=",a); a=10; document.write("<br>a=",a); a/=3; document.write(" 執(zhí)行a/=3后,a=",a); a=10; document.write("<br>a=",a); a%=3; document.write(" 執(zhí)行a%=3后,a=",a); </SCRIPT> </HEAD> <BODY> </BODY> </HTML> 將頁面保存為var4.htm文件,在瀏覽器中執(zhí)行,結(jié)果如圖2-6所示。 圖2-6 賦值運(yùn)算符實例的運(yùn)行結(jié)果 2.4.3 關(guān)系運(yùn)算符 關(guān)系運(yùn)算符又稱為比較運(yùn)算符,是一個雙目運(yùn)算符,用于比較操作數(shù)之間的大小等關(guān)系,關(guān)系運(yùn)算符的操作數(shù)可以是數(shù)值、字符串,也可以是布爾值,其運(yùn)算結(jié)果是true或false。JavaScript中的關(guān)系運(yùn)算符如表2-6所示。 表2-6 JavaScript中的關(guān)系運(yùn)算符 運(yùn)算符 說 明 < 小于 <= 小于等于 > 大于 >= 大于等于 == 等于 === 嚴(yán)格等于 != 不等于 !== 嚴(yán)格不等于 說明:嚴(yán)格等于(===)和嚴(yán)格不等于(!==)運(yùn)算符是ECMAScript標(biāo)準(zhǔn)中的運(yùn)算符,因此只在Navigator 4.06以上和IE4以上的瀏覽器中支持。 如果比較的兩個操作數(shù)為數(shù)值型,則按數(shù)學(xué)上的比較原則來比較。如果比較的兩個操作數(shù)為布爾值,JavaScript認(rèn)為true大于false。如果比較的兩個操作數(shù)為字符串型時,要按字符編碼依次自左到右進(jìn)行比較。 實例2.7 JavaScript中關(guān)系運(yùn)算符的使用。其代碼如下: <HTML> <HEAD> <TITLE>比較運(yùn)算符</TITLE> <SCRIPT Language="JavaScript"> var i=5,j=8; var b1=true,b2=false; var s1="Shanghai"; var s2="ShangHai"; var s3="I am a boy." var s4="I am a girl." var s5="北京"; var s6="天津"; document.write("數(shù)值型比較:5>8=",i>j); document.write("<br>布爾值比較:true>false=",b1>b2); document.write("<br>字符串比較:"); document.write("<br>'Shanghai'>'ShangHai'=",s1>s2); document.write("<br>'Shanghai'=='ShangHai'=",s1==s2); document.write("<br>'I am a boy.'>'I am a girl.'=",s3>s4); document.write("<br>'北京'>'天津'=",s5>s6); document.write("<br>忽略大小寫比較 'Shanghai'=='ShangHai'=",s1.toUpperCase()==s2.toUpperCase()); </SCRIPT> </HEAD> <BODY> </BODY> </HTML> 程序中使用s1.toUpperCase()和s2.toUpperCase()方法將字符串s1和s2全部轉(zhuǎn)換為大寫字母。將頁面保存為var5.htm文件,在瀏覽器中執(zhí)行,結(jié)果如圖2-7所示。 圖2-7 關(guān)系運(yùn)算符實例的運(yùn)行結(jié)果 JavaScript提供的運(yùn)算符==和!=分別用于完成判斷兩個操作數(shù)是否相等,其中操作數(shù)可以是各種類型。除了相等和不相等運(yùn)算符之外,JavaScript還提供了嚴(yán)格等于(===)和嚴(yán)格不等于(!==)運(yùn)算符,用于測試兩個操作數(shù)是否完全一樣,包括值是否相等以及類型是否相同。這兩個運(yùn)算符在比較之前不進(jìn)行類型轉(zhuǎn)換直接測試是否相等。只有兩個操作數(shù)的值相等并且類型也相同時,一致性測試運(yùn)算===的計算結(jié)果才為true;否則其值為false。例如,表達(dá)式“58”==58的結(jié)果為true,而表達(dá)式“58”===58的結(jié)果為false,原因在于它們的數(shù)據(jù)類型不一致(一個操作數(shù)為字符串型,另一個為數(shù)值類型)。 2.4.4 邏輯運(yùn)算符 邏輯運(yùn)算符通常在條件語句中使用,它們與關(guān)系運(yùn)算符一起構(gòu)成復(fù)雜的判斷條件。JavaScript中提供了3種邏輯運(yùn)算符:邏輯與(&&)、邏輯或(||)、邏輯非(!),如表2-7所示。 表2-7 JavaScript中的邏輯運(yùn)算符 運(yùn)算符 說 明 && 邏輯與,當(dāng)兩個操作數(shù)的值都為true時,運(yùn)算結(jié)果為true || 邏輯或,只要兩個操作數(shù)中有一個值為true時,運(yùn)算結(jié)果就為true ! 邏輯非,對操作數(shù)取反,即true值非運(yùn)算的結(jié)果為false,false值非運(yùn)算的結(jié)果為true 其中邏輯與和邏輯或運(yùn)算符是雙目運(yùn)算符,而邏輯非運(yùn)算符是單目運(yùn)算符。它們所連接的操作數(shù)都是邏輯型變量或表達(dá)式。對于連接的非邏輯型變量或表達(dá)式,在JavaScript中將非0的數(shù)值看作是true,而將0看作是false。 (1) 邏輯與(&&)。只有當(dāng)兩個操作數(shù)的值都為true時,運(yùn)算結(jié)果才為true;否則為false。因此,如果邏輯與運(yùn)算符左邊的表達(dá)式的計算結(jié)果為零、null或空字符串,那么整個表達(dá)式的結(jié)果就肯定是false;如果邏輯與運(yùn)算符左邊的表達(dá)式的計算結(jié)果為true,此時計算邏輯與運(yùn)算符右側(cè)的表達(dá)式,如果這個表達(dá)式的值也是true,那么整個表達(dá)式的結(jié)果為true;否則,如果左邊值為true,右邊值為false,整個表達(dá)式的值將為false。 (2) 邏輯或(||)。只要兩個操作數(shù)中有一個值為true時,運(yùn)算結(jié)果就為true,如果兩個操作數(shù)的值都為假,則運(yùn)算結(jié)果為假。如果邏輯或運(yùn)算符左邊的表達(dá)式計算結(jié)果為true,那么就不再計算或運(yùn)算符右邊的表達(dá)式的值,并且整個表達(dá)式的值為true;如果邏輯或運(yùn)算符左邊的表達(dá)式計算結(jié)果為false,那么計算或運(yùn)算符右側(cè)的表達(dá)式的值,如果這個值為true,那么整個表達(dá)式的值為true;如果右側(cè)表達(dá)式計算的結(jié)果也為false,那么整個表達(dá)式的值為false。 (3) 邏輯非(!)。用于否定一個運(yùn)算的結(jié)果!罢妗钡倪壿嫹侵禐椤凹佟,“假”的邏輯非值為“真”。邏輯非是一個單目運(yùn)算符,它只有一個操作數(shù),如!true或!(5>8) 。 實例2.8 JavaScript中邏輯運(yùn)算符的使用。其代碼如下: <HTML> <HEAD> <TITLE>邏輯運(yùn)算符</TITLE> <SCRIPT Language="JavaScript"> var a=10,b=20,c=30,d=40; document.write("a=",a," b=",b," c=",c," d=",d); document.write("<br>true&&false=",true&&false); document.write("<br>true||false=",true||false); document.write("<br>!true=",!true); document.write("<br>!false=",!false); document.write("<br>(a>b)&&(d>c)=",(a>b)&&(d>c)); document.write("<br>(a>b)||(d>c)=",(a>b)||(d>c)); document.write("<br>!(a>b)=",!(a>b)) </SCRIPT> </HEAD> <BODY> </BODY> </HTML> 將頁面保存為var6.htm文件,在瀏覽器中執(zhí)行,結(jié)果如圖2-8所示。 圖2-8 邏輯運(yùn)算符實例的運(yùn)行結(jié)果 2.4.5 字符串運(yùn)算符 在JavaScript中只有一個字符串運(yùn)算符,即連接運(yùn)算符(+),它是一個雙目運(yùn)算符,可以將兩個字符串連接起來形成一個新的字符串。例如"This"+"is"的運(yùn)算結(jié)果為"This is", "中國"+"北京"運(yùn)算結(jié)果為"中國北京"。 當(dāng)操作數(shù)中至少有一個操作數(shù)是字符串時,JavaScript將自動把另一操作數(shù)轉(zhuǎn)換為字符串。例如,"36"+2的運(yùn)算結(jié)果為"362","It is"+true的運(yùn)算結(jié)果為"It is true"。 另外,字符串連接運(yùn)算符還可以和前面的賦值運(yùn)算符聯(lián)合使用,形成"+="運(yùn)算符,它的作用是,將運(yùn)算符右側(cè)的字符串拼接到該運(yùn)算符左側(cè)字符串的后面,并將結(jié)果賦值給運(yùn)算符左側(cè)的操作數(shù)。 實例2.9 JavaScript中字符串運(yùn)算符的使用。其代碼如下: <HEAD> <TITLE>字符串運(yùn)算符</TITLE> <SCRIPT Language="JavaScript"> var a="this"; var b=" is "; var c=10; var d=true; var e; document.write("a=",a," b=",b," c=",c," d=",d); document.write("<br>a+b=",e=a+b); document.write("<br>e=",e); document.write("<br>e+c=",e+c); document.write("<br>e+d=",e+d); document.write("<br>c+c=",c+c); document.write("<br>d+d=",d+d); document.write("<br>e+e=",e+e); e+=c; document.write("<br>執(zhí)行完e+=c后,e=",e); </SCRIPT> </HEAD> <BODY> </BODY> </HTML> 將頁面保存為var7.htm文件,在瀏覽器中執(zhí)行,結(jié)果如圖2-9所示。 圖2-9 字符串運(yùn)算符實例的運(yùn)行結(jié)果 說明:如果字符串運(yùn)算符中兩個操作數(shù)都為數(shù)值型或布爾型,則按加法進(jìn)行運(yùn)算。布爾型中的true被轉(zhuǎn)換為數(shù)值1,false則轉(zhuǎn)換為數(shù)值0。 2.4.6 其他運(yùn)算符 除了前面介紹的各種運(yùn)算符以外,JavaScript還提供了位操作運(yùn)算符、條件運(yùn)算符等其他的運(yùn)算符。表2-8 列出的是有關(guān)位操作的運(yùn)算符。 表2-8 JavaScript中的位運(yùn)算符 運(yùn)算符 說 明 ~ 按位取反運(yùn)算符 << 按位左移運(yùn)算符 >> 按位右移運(yùn)算符 >>> 無符號右移運(yùn)算符 & 按位與運(yùn)算符 ^ 按位異或運(yùn)算符 | 按位或運(yùn)算符 &= 按位與賦值運(yùn)算符 |= 按位或賦值運(yùn)算符 ^= 按位異或賦值運(yùn)算符 <<= 按位左移賦值運(yùn)算符 >>= 按位右移賦值運(yùn)算符 >>>= 按位無符號右移賦值運(yùn)算符 表2-9列出了JavaScript中其他的一些運(yùn)算符。 表2-9 JavaScript中的其他運(yùn)算符 運(yùn)算符 說 明 ? : 三目條件運(yùn)算符。例如,x?a:b表示如果x為真,則整個表達(dá)式的值為a的值;否則為b的值 , 逗號運(yùn)算符,計算兩個表達(dá)式的值,并返回第二個表達(dá)式的值 delete 用于刪除對象并釋放該對象所占用的空間 typeof 用于返回操作數(shù)的數(shù)據(jù)類型 void 運(yùn)算符對表達(dá)式求值,并返回 undefined instanceof 判斷對象是否是指定的對象類型 new 用于創(chuàng)建用戶自定義對象實例 in 判斷指定屬性是否是對象的屬性。當(dāng)指定屬性是對象的屬性時返回真;否則返回假 2.4.7 運(yùn)算符的優(yōu)先級 運(yùn)算符優(yōu)先級是指在一個表達(dá)式中,運(yùn)算符的優(yōu)先順序,程序的執(zhí)行順序?qū)⒁罁?jù)運(yùn)算符的優(yōu)先級順序。例如,在進(jìn)行四則運(yùn)算時,規(guī)則是先乘除、后加減,即乘法和除法的運(yùn)算優(yōu)先級高于加法和減法的優(yōu)先級,同一優(yōu)先級的運(yùn)算符按從左到右方式進(jìn)行計算,這就是運(yùn)算符的結(jié)合方式。所有的算術(shù)運(yùn)算符都是從左向右執(zhí)行,所以如果有兩個或者更多的算術(shù)運(yùn)算符有相同的優(yōu)先級,那么左邊的將先執(zhí)行,然后依次執(zhí)行。 如下面的表達(dá)式: x = 5 + 9 – 3 * 2 + 30/6 該例子中,乘和除將首先被運(yùn)算,接下來是加和減,運(yùn)算中還包含了乘和除兩個優(yōu)先級相同的運(yùn)算符號,所以左邊的乘法將先被執(zhí)行,然后是除;3*2等于6,30/6等于5,則原式變?yōu)椋簒=5+9–6+5,接下來按從左到右的順序進(jìn)行加減運(yùn)算,最后的結(jié)果x=13。 如果想改變運(yùn)算的執(zhí)行順序,就需要使用成對的括號,括號內(nèi)的運(yùn)算將比括號外的運(yùn)算先執(zhí)行。如果同樣是上面幾個運(yùn)算數(shù),寫成下面的表達(dá)式: x = (5 + 9 – 3) * 2 + 30/6 括號里的表達(dá)式將先被執(zhí)行,結(jié)果是11,原式變?yōu)閤=11*2+30/6,然后進(jìn)行乘除運(yùn)算,接下來是加減運(yùn)算,最后的結(jié)果是27,這個結(jié)果與前一個例子的結(jié)果就完全不相同了。 如果兩個或者兩個以上的運(yùn)算符有相同的優(yōu)先級,JavaScript根據(jù)運(yùn)算符的執(zhí)行順序進(jìn)行排序,一般都是從左向右。但是也有一些是從右向左。表2-10中列出了JavaScript中的運(yùn)算符優(yōu)先級以及運(yùn)算符的結(jié)合方式,同一優(yōu)先級的運(yùn)算符放在同一行上,表格自上向下運(yùn)算符的優(yōu)先級逐漸降低,在“結(jié)合性”一欄中列出的運(yùn)算符的結(jié)合性是從右向左的,其余運(yùn)算符的結(jié)合性均為從左向右。 表2-10 JavaScript中運(yùn)算符優(yōu)先級和結(jié)合性 優(yōu)先級 運(yùn)算符 結(jié)合性(從右向左) 1 括號運(yùn)算, 函數(shù)調(diào)用, 數(shù)組游標(biāo) 2 !, ~, +, -, ++, --, typeof, new,void, delete +(一元加), -(一元減), ++, --, !, ~ 3 *, /, % 4 +, - 5 <<, >>, >>> 6 <, <=, >, >= 7 = =, != , = = =, != = 8 & 9 ^ 10 | 11 && 12 || 續(xù)表 優(yōu)先級 運(yùn)算符 結(jié)合性(從右向左) 13 ?: ?: 14 =, +=, -=, *=, /=, %=, <<=, >>=,>>>=, &=, ^=, != =, *=, /=, +=, -=, %=, <<=, >>=,&=, ^=,!= 15 逗號 (,)操作符 課 后 小 結(jié) 本章主要介紹了JavaScript語言的基本語法規(guī)則,以及數(shù)據(jù)類型、變量和運(yùn)算符的基本使用方法,為后續(xù)JavaScript的流程控制語句的學(xué)習(xí)打下基礎(chǔ)。 習(xí) 題 一、填空題 1.??JavaScript里面的標(biāo)識符不能以__________開頭。 2. 根據(jù)變量的作用域,可以把變量分為_____________或者_(dá)___________。 3. 在JavaScript運(yùn)算符中,______擁有最高的優(yōu)先級。 4.??__________運(yùn)算符可以連接兩個字符串。 二、選擇題 1. 下面( )是聲明變量和賦值的正確語法。 A.var myVariable="Hello";B.var myVariable=Hello; C."Hello" =var myVariable;D.var "Hello"= myVariable; 2. 下面( )是合法的變量名。 A.%varoable_name B.1varoable_name C.varoable_nameD.+varoable_name 3. 下述( )不是引用數(shù)據(jù)類型。 A.函數(shù)B.?dāng)?shù)組C.布爾類型D.對象 4. 下面( )不是浮點(diǎn)數(shù)。 A.-439.35 B.3.17C.10D.-7e11 5. 下面( )轉(zhuǎn)義字符可以在字符串中加入一個換行操作。 A.\bB.\fC.\nD.\r 6. 在語句return Value=count++中,如果count的初始值為10,則Value的值為( )。 A.10B.11C.12D.20 7. 表達(dá)式50=="fifty"的值為( )。 A.trueB.falseC.50D.“fifty” 8. 如果x的值為1,執(zhí)行y=eval(x+"2*2");語句后,y的值為( )。 A.“1+2*2”B.“12*2”C.6D.24 三、上機(jī)練習(xí)題 定義3個變量,分別為整型、浮點(diǎn)型和字符串,對它們進(jìn)行算術(shù)運(yùn)算(加、減、乘、除等),將結(jié)果輸出到頁面上。
你還可能感興趣
我要評論
|