第二章--JavaScript_第1頁
第二章--JavaScript_第2頁
第二章--JavaScript_第3頁
第二章--JavaScript_第4頁
第二章--JavaScript_第5頁
已閱讀5頁,還剩102頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第第2章章 JavaScript語言語言第二章(JavaScript)12/17/20211l JavaScript簡介簡介 JavaScript是一種輕量級的、解釋性的程序設計語言,而且具備一定面向對象的能力。JavaScript與操作系統無關,它依賴JavaScript的解釋引擎。 瀏覽器通過內嵌JavaScript的解釋引擎從而獲得了對JavaScript的處理能力。通過在網頁中嵌入標簽,將JavaScript腳本添加到網頁中,使得網頁不再是簡單的靜態HTML,而是包含了控制瀏覽器的程序、動態創建HTML內容和與用戶交互的程序,即動態HTML(DHTML)JavaScript與與Java

2、的區別的區別Java和JavaScript是兩個完全不同的產品。Java是SUN公司推出的面向對象的程序設計語言;JavaScript是Netscape公司的產品,目的是為了擴展Netscape瀏覽器的功能Java是面向對象的程序設計語言,即使開發簡單的程序也必須從類定義開始;JavaScript是基于對象的,本身提供了非常豐富的內部對象供設計人員使用Java語言的最小單位是類定義,而JavaScript中則充斥著大量函數Java語言必須經過編譯生成字節碼,然后由Java虛擬機運行這些字節碼;JavaScript是一種腳本語言,其源代碼無須經過編譯,由瀏覽器解釋執行12/17/20212Jav

3、aScript簡介簡介第二章(JavaScript語言)l JavaScript簡介簡介Java采用強類型變量,所有變量必須先聲明后使用;JavaScript采用弱類型變量,變量使用前無須聲明,而由解釋器在運行時檢查其數據類型Java代碼是一種與HTML無關的格式,必須通過HTML中引用外媒體方式進行裝載,其代碼以字節碼的形式保存在獨立的文檔中;JavaScript的代碼是一種文本字符格式,可以直接嵌入HTML文檔中,并且可動態裝載JavaScript的版本的版本 JavaScript是由網景(Netscape)公司創建,標準版本的名字叫做ECMAScript,目前ECMAScript第3版已

4、經被所有瀏覽器完整地實現了。ECMAScript第5版瀏覽器也已經開始實現它了,有時我們也會看到JavaScript的版本號(比如JavaScript1.5或JavaScript1.8)這些是Mozilla的版本號,1.5版本基本上就是ECMAScript3,后續版本包含了非標準的語言擴展12/17/20213JavaScript簡介簡介第二章(JavaScript語言)l 運行運行JavaScript(1)使用javascript:前綴構建執行JavaScript代碼的URL 在設置URL的地方都可以使用這種以javascript:作為前綴的URL,在用戶激發該URL時,javascript

5、:之后的JavaScript代碼就會獲得執行(2)使用元素來包含JavaScript代碼【2.1run】 如果頁面里需要包含大量JavaScript代碼,則建議將這些JavaScript腳本放在標簽和之間,元素既可作為子元素,也可作為子元素(3)導入JavaScript文件【2.1test】 為了讓HTML頁面和JavaScript腳本更好地分離,我們可以將JavaScript腳本單獨保存在一個*.js文件中,HTML頁面導入該*.js文件即可。 12/17/20214JavaScript簡介簡介第二章(JavaScript語言)lJavaScript基本數據類型基本數據類型 JavaScri

6、pt的基本數據類型有5種:數值類型:包含整數和浮點數布爾類型:只有true和false兩種值字符串類型:字符串變量必須以引號括起來,引號可以是單引號,也可以使雙引號undefined類型:專門用來確定一個已經創建但是沒有初值的變量null:用于表明某個變量的值為空除此之外,除此之外,JavaScript還支持復合數據類型:對象、數組、函數、以及一些對象類。還支持復合數據類型:對象、數組、函數、以及一些對象類。數值類型數值類型【2.2simpleNumber2】JavaScript并不區分整型數值和浮點數值,所有的數字都是由浮點型表示的。JavaScript采用IEEE754標準定義的64位浮點

7、格式來表示數字,所能表示的最大值為:1.797693134862315710303,最小值是510-324。JavaScript中的數值形式可以非常豐富,完全支持科學計數法表示。語法格式: 數字數字1 E 數字數字2 12/17/20215JavaScript數據類型數據類型第二章(JavaScript語言)lJavaScript基本數據類型基本數據類型數值類型數值類型如果數值只有小數部分,則可以省略整數部分的0,但小數點不能省略【2.2simpleNumber2】 e=.24e-2;數值直接量不要以0開始,因為JavaScript不僅支持十進制數,還支持其他進制的數,八進制和十六進制數都以0

8、開始【2.2octal】 a=0 x13;/十六進制十六進制 b=014;/八進制八進制當數值變量的值超出了其表值范圍時,將出現兩個特殊值:Infinity(無窮大)和-Infinity(負無窮大);Infinity、-Infinity與其他數值進行算術運算時,整個算術表達式將變成另一個特殊值:NaN;但Infinity和-Infinity都可以執行比較運算,即Infinity等于Infinity,而-Infinity等于-Infinity【2.2infinity】JavaScript中的算術運算允許除數為0,當除數和被除數同時為零,得到結果是NaN,正數除零的結果就是Infinity,負數除

9、零的結果就是-InfinityNaN如果在算術表示中,整個算術表達式的值為NaN;NaN不會與任何數值變量相等,也就是NaN=NaN也返回false;JavaScript提供isNaN()函數來判斷某個變量是否為NaN【2.2judgeNan】12/17/20216JavaScript數據類型數據類型第二章(JavaScript語言)lJavaScript基本數據類型基本數據類型字符串類型字符串類型字符串(string)是由單引號或者雙引號括起來的Unicode字符序列,其中可以含有0個或多個字符。與C、C+或Java不同的是,JavaScript并沒有char這種單個字符的數據類型,所以要表

10、示單個字符,只能用長度為1的字符串來代替。JavaScript的字符串類型必須以引號括起來,此處的引號既可以是單引號也可以是雙引號 a=Hello JavaScript b=Hello JavaScriptJavaScript中比較兩個字符串的字符序列是否相等使用=即可,無須使用equals()方法12/17/20217JavaScript數據類型數據類型第二章(JavaScript語言)lJavaScript基本數據類型基本數據類型字符串類型字符串類型JavaScript操作字符串的方法:【2.2StringMethod】charAt():獲取字符串特定索引處的字符charCodeAt():

11、返回字符串中特定索引處的字符對應的Unicode值length:直接返回字符串的長度。JavaScript中的中文字符算一個字符toUpperCase():將字符串的所有字母轉換成大寫字母toLowerCase():將字符串的所有字符轉換成小寫字母fromCharCode():將系列Unicode值轉換成字符串indexOf():返回字符串中特定字符串第一次出現的位置lastIndexOf():返回字符串中特定字符串最后一次出現的位置substring():返回字符串的某個子串slice():返回字符串的某個子串,支持負數參數match():使用正則表達式搜索目標子字符串search():使用

12、正則表達式搜索目標子字符串concat():用于將多個字符串拼接成一個字符串split():將某個字符串分割成多個字符串,可以指定分隔符replace():將字符串中某個子串以特定字符串替代12/17/20218JavaScript數據類型數據類型第二章(JavaScript語言)lJavaScript基本數據類型基本數據類型Undefined和和null類型類型【2.2undefined】 undefined類型的值只有undefined一個,該值用于表示某個變量不存在,或者沒有為其分配值,也用于表示對象的屬性不存在; null用于表示變量的值為空undefined和和null的區別:的區別

13、: undefined表示沒有為變量設置值,null表示將變量值設為空注意:很多時候注意:很多時候undefined和和null本身就相等,即本身就相等,即null=undefined將返回將返回true;如果;如果我們要精確區分我們要精確區分null和和undefined應該考慮使用精確等于符(應該考慮使用精確等于符(=)12/17/20219JavaScript數據類型數據類型第二章(JavaScript語言)lJavaScript復合數據類型復合數據類型 復合類型是由多個基本數據類型(也可以包含復合類型)組成的數據體。復合類型是由多個基本數據類型(也可以包含復合類型)組成的數據體。對象(

14、對象(Object)對象是一系列命名變量和函數的集合。其中命名變量的類型可以是基本數據類型,也可以是復合類型;對象中的命名變量稱為屬性,而對象中的函數稱為方法;對象訪問屬性和函數的方法都是通過“.”來進行JavaScript提供了大量的內置對象和內置類,同時也允許用戶自定義對象和類;JavaScript常用的內置類:常用的內置類:12/17/202110JavaScript數據類型數據類型第二章(JavaScript語言)類名類名說明說明類名類名說明說明Array數組類Date日期類Error錯誤類Function函數類Math數學類,包含執行數學運算的方法Number數值類Object對象類

15、String字符串類數組(數組(Array)【2.2arr】數組是一系列的變量。與其他語言不同的是,JavaScript的數組中元素的類型可以不同JavaScript數組的三個特征:數組的三個特征:u數組的長度可變u同一個數組里數組元素的類型可以互不相同u訪問數組元素時不會產生數組越界,訪問并未賦值的數組元素時,該元素的值為undefined函數(函數(Function)【2.2simpleFunction】函數可以是包含一段可執行性代碼,也可以接收調用者傳入的參數。JavaScript函數的四個特征:函數的四個特征:u無須聲明返回值類型u無須聲明形參類型u可以獨立存在,無須屬于任何類u必須使

16、用function關鍵字定義12/17/202111JavaScript數據類型數據類型第二章(JavaScript語言)全局對象全局對象【2.2this】全局對象是預定義的對象,作為 JavaScript 的全局函數和全局屬性的占位符。通過使用全局對象,可以訪問所有其他所有預定義的對象、函數和屬性。全局對象不是任何對象的屬性,所以它沒有名稱。全局對象的特征:全局對象的特征:u全局對象只是一個對象,而不是類。既沒有構造函數,也無法實例化一個新的全局對象。u全局對象不是任何對象的屬性,所以它沒有名稱。u全局對象是預定義的對象,作為 JavaScript 的全局函數和全局屬性的占位符。u在頂層 J

17、avaScript 代碼中,可以用關鍵字 this 引用全局對象。u全局對象是作用域鏈的頭,意味著在頂層 JavaScript 中聲明的所有變量都將成為全局對象的屬性。u通常不必用 this 引用全局對象,因為所有非限定性的變量和函數名都會作為全局對象的屬性來查詢。u通過使用全局對象,可以訪問所有其他預定義的對象、函數和屬性。u全局對象的預定義屬性都是不可枚舉的,所以可以用 for/in 循環列出所有隱式或顯式聲明的全局變量。全局屬性:全局屬性:NaN,Infinity,undefined全局函數:全局函數:eval,parseInt,parseFloat,isNaN,isFinite,dec

18、odeURI,encodedURI,encodeURIComponent全局構造函數:全局構造函數:Object,Function,Array,String,Boolean,Number,Date,RegExp,Error,EvalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError其他屬性的全局對象:其他屬性的全局對象:Math,JSON12/17/202112JavaScript數據類型數據類型第二章(JavaScript語言)包裝對象包裝對象【2.2bz】var s=http:/;var addr=s.sbustri

19、ng(s.indexOf(:)+2,s.length);JavaScript中不僅提供了數值類型、字符串類型和布爾類型,它同時還提供了數值類、字符串類和布爾類,這些類獎對應的原始數據類型包裝了起來,它不但擁有其原始數據值,而且還定義了屬性和操作值的方法。當你訪問一個字符串的屬性或方法時,JavaScript內部會自動創建其包裝對象。這個字符串包裝對象將替換原始字符串值,它擁有已定義的屬性和方法只有當字符串以對象的方式使用時,它的對象才會被創建,并且這個對象時臨時性的,在訪問了它的屬性或方法之后,即不再被使用,它將被系統所回收。這種臨時性對象我們稱為包裝對象包裝對象。我們也可以通過String(

20、),Number()或Boolean()構造函數來顯示創建包裝對象注意:注意:=將原始值和其包裝對象視為相等,但將原始值和其包裝對象視為相等,但=將它們視為不等,通過將它們視為不等,通過typeof運算符運算符可以看到原始值和其包裝對象的不通。可以看到原始值和其包裝對象的不通。12/17/202113JavaScript數據類型數據類型第二章(JavaScript語言)原始值和對象原始值和對象【2.2ysz】JavaScript中的原始值(undefined、null、布爾值、數字和字符串)與對象、函數和數組有著根本區別。原始值是不可更改的,而對象是可變的。原始值是不可更改的,而對象是可變的。

21、原始值的比較是值的比較,其中對于字符串來將如果兩個單獨的字符串,當它們的長度相等且每個索引的字符都相等時,JavaScript認為它們相等對象的比較并非值得比較,即使兩個對象包含同樣的屬性及相同的值,它們也是不相等的,各個索引元素完全相等的兩個數組也不相等,只有當它們引用同一個基對象時,它們才相等。12/17/202114JavaScript數據類型數據類型第二章(JavaScript語言)類型轉換類型轉換【2.2ysz】轉換成布爾值轉換成布爾值 方法:(1)使用! var o =23; alert(!o);/轉換成字符串,結果是true (2)使用Boolean() var o = new

22、Boolean(23);alert(o);/轉換成字符串,結果是falseu1、數字轉換成布爾值、數字轉換成布爾值除了除了0被轉換成被轉換成false外,所有自他數字都會被轉換成外,所有自他數字都會被轉換成true, NaN 也總是被轉換成也總是被轉換成falseu2、字符串轉換成布爾值、字符串轉換成布爾值除了空字符串被轉換成除了空字符串被轉換成false外,所有字符串都會被轉換成外,所有字符串都會被轉換成true12/17/202115JavaScript數據類型數據類型第二章(JavaScript語言)u3、其他類型轉換成布爾值、其他類型轉換成布爾值undefined和和null會被轉換成

23、會被轉換成false, 任何對象任何對象(包括數組包括數組)和函數都會被轉換成和函數都會被轉換成true轉換成字符串值轉換成字符串值 方法:(1)使用一個字符串與之相加 10+3; (2)使用String() String(22);u1、數字轉換成字符串、數字轉換成字符串數字都是按原樣轉換成字符串,但用科學計數法表示的數字數字都是按原樣轉換成字符串,但用科學計數法表示的數字(也就是帶也就是帶e的的)會轉換成它內部代表的真實會轉換成它內部代表的真實的數字的字符串的數字的字符串當當null與數字相加時,不會進行字符串連接,而是會把與數字相加時,不會進行字符串連接,而是會把null轉換成轉換成0來進

24、行數學元素來進行數學元素對于對于任意數組,將會轉為任意數組,將會轉為;對于;對于9(1個數字元素)將會轉為個數字元素)將會轉為9;12/17/202116JavaScript數據類型數據類型第二章(JavaScript語言)u2、其他類型轉換成字符串、其他類型轉換成字符串對于對于任意數組,將會轉為任意數組,將會轉為;對于;對于9(1個數字元素)將會轉為個數字元素)將會轉為9;當對象、數組或函數轉換成字符串時,會調用它們的當對象、數組或函數轉換成字符串時,會調用它們的 toString() 方法來進行轉換;方法來進行轉換;數組類的數組類的toString()方法將每個數組元素轉換為一個字符串,并

25、在元素之間添加逗號后合并成結果字符方法將每個數組元素轉換為一個字符串,并在元素之間添加逗號后合并成結果字符串串函數類的函數類的toString()方法返回這個函數的實現定義的表示方式,通常是將用戶定義的函數轉換為方法返回這個函數的實現定義的表示方式,通常是將用戶定義的函數轉換為JavaScript源代碼字符串源代碼字符串日期類的日期類的toString方法返回了一個可讀的日期和時間字符串方法返回了一個可讀的日期和時間字符串 正則表達式類的正則表達式類的toString()方法將正則表達式對象轉換為表示正則表達式直接量的字符串方法將正則表達式對象轉換為表示正則表達式直接量的字符串除了除了toSt

26、ring()方法外,還有一個轉換對象的函數方法外,還有一個轉換對象的函數valueOf(),如果存在任意原始值,它就默認將對象轉如果存在任意原始值,它就默認將對象轉換為表示它的原始值,而對象是復合值,默認將簡單的返回對象本身,而不是返回一個原始值;日換為表示它的原始值,而對象是復合值,默認將簡單的返回對象本身,而不是返回一個原始值;日期類會返回它的一個內部表示:期類會返回它的一個內部表示:1970年年1月月1日以來的毫秒數日以來的毫秒數12/17/202117JavaScript數據類型數據類型第二章(JavaScript語言)u2、其他類型轉換成字符串、其他類型轉換成字符串JavaScrip

27、t中對象到字符串的轉換經過如下步驟:中對象到字符串的轉換經過如下步驟:如果對象具有如果對象具有toString()方法,則調用這個方法。如果它返回一個原始值,方法,則調用這個方法。如果它返回一個原始值,JavaScript將這個值轉換將這個值轉換為字符串(如果本身不是字符串的話),并返回這個字符串結果。為字符串(如果本身不是字符串的話),并返回這個字符串結果。如果對象沒有如果對象沒有toString()方法,或者這個方法并不返回一個原始值,那么方法,或者這個方法并不返回一個原始值,那么JavaScript會調用會調用valueOf()方法。如果存在這個方法,則方法。如果存在這個方法,則Java

28、Script調用它。如果返回值是原始值,調用它。如果返回值是原始值,JavaScript將這個值轉換為將這個值轉換為字符串,并返回這個字符串結果字符串,并返回這個字符串結果否則,否則,JavaScript無法從無法從toString()或或valueOf()獲得一個原始值,因此這時它將拋出一個類型錯誤獲得一個原始值,因此這時它將拋出一個類型錯誤異常異常12/17/202118JavaScript數據類型數據類型第二章(JavaScript語言)轉換成數字值轉換成數字值 方法:(1)使用一個一元的加號運算符,這是最快的方法 +x (2)加號以外的其他數學運算符 x-0 或或 x*1 (3)使用N

29、umber()構造函數進行轉換 Number(x)1、字符串轉換成數字、字符串轉換成數字除了空字符串會被轉換成除了空字符串會被轉換成0以外,如果字符串中是正確的數字書寫形式,那么都可以順利轉換成相應的以外,如果字符串中是正確的數字書寫形式,那么都可以順利轉換成相應的數字,不管是小數、科學計數還是八進制、十六進制形式等。但是如果參雜了其他不能構成數字或數字,不管是小數、科學計數還是八進制、十六進制形式等。但是如果參雜了其他不能構成數字或不符合數字書寫規則的東西,則會被轉換成不符合數字書寫規則的東西,則會被轉換成NaN。NaN是指不是數字的意思,任何數字數字跟是指不是數字的意思,任何數字數字跟Na

30、N進行運算得到的結果都是進行運算得到的結果都是NaN,NaN甚至跟自己也不相甚至跟自己也不相等。等。12/17/202119JavaScript數據類型數據類型第二章(JavaScript語言)2、其它類型轉換成數字、其它類型轉換成數字對象和函數總是被轉換成對象和函數總是被轉換成NaN, undefined也會被轉換成也會被轉換成NaN, 但但null會被轉換成會被轉換成0數組會首先被轉換成字符串,然后再轉換成數字。數組會首先被轉換成字符串,然后再轉換成數字。JavaScript中對象到數字的轉換經過如下步驟:中對象到數字的轉換經過如下步驟:如果對象具有如果對象具有valueOf()方法,后者

31、返回一個原始值,則方法,后者返回一個原始值,則JavaScript將這個原始值轉換為數字(如果將這個原始值轉換為數字(如果需要的話)并返回這個數字需要的話)并返回這個數字否則,如果對象具有否則,如果對象具有toString()方法,后者返回一個原始值,則方法,后者返回一個原始值,則JavaScript將其轉換并返回將其轉換并返回否則,否則,JavaScript拋出一個類型錯誤異常拋出一個類型錯誤異常12/17/202120JavaScript數據類型數據類型第二章(JavaScript語言)l變量聲明變量聲明 在JavaScript程序中,使用一個變量之前應當先聲明。變量是使用關鍵字var來聲

32、明的。 var i; var i,sum; var message=hello; 如果未在var聲明語句中給變量指定初始值,那么雖然聲明了這個變量,但在給它存入一個值之前,它的初始值就是undefined。 JavaScript的變量可以在程序中被先后賦予不同數據類型的值l變量的作用域變量的作用域 變量按照作用域的不同,一般分為全局變量和局部變量。 全局變量擁有全局作用域,在JavaScript代碼中的任何地方都是有定義的;局部變量,作用域是局部性的;在函數內聲明的變量只在函數體內有定義,是局部變量;函數的參數也是局部變量;【2.3scope_test】12/17/202121JavaScri

33、pt變量變量第二章(JavaScript語言)l變量的作用域變量的作用域在函數體內,局部變量的優先級高于同名的全局變量。如果在函數體內聲明的一個局部變量或者函數參數中帶有的變量和全局變量重名,那么全局變量就被局部變量所遮蓋【2.3noBlockScope】var scope=global;function checkscope() var scope=local; document.write(scope);全局變量編寫代碼時可以不寫var,但聲明局部變量時則必須使用varscope=global;function checkscope() scope=local; document.writ

34、e(scope);變量在聲明它們的函數體以及這個函數體嵌套的任意函數體內都是有意義的。這意味著變量在聲明之前甚至已經可用【2.3noBlockScope2】var scope=global;function checkscope() document.write(scope); var scope=local; document.write(scope); 12/17/202122JavaScript變量變量第二章(JavaScript語言)l算術運算符算術運算符JavaScript的算術運算符主要有:1加法運算符(+)2減法運算符(-)3乘法運算符(*)4除法運算符(/)5模運算(%)6遞增

35、運算符(+)7遞減運算符(-)“+”運算符運算符規則:規則:優先考慮字符串連接 如果其中一個操作數是字符串或轉換為字符串的對象,另外一個操作數將會轉為字符串,加法將進行字符串的連接操作; 如果兩個操作數都不是字符串,那么都將進行算術加法運算 當加號運算符和字符串和數字一起使用時,運算結果將依賴于運算符的運算順序12/17/202123JavaScript運算符運算符第二章(JavaScript語言)“+”運算符運算符舉例:舉例:12/17/202124JavaScript運算符運算符第二章(JavaScript語言)“+”和和“-”運算符運算符規則:規則:“+”“-”運算符從不進行字符串連接操

36、作,它總是會將操作數轉換為數字并加1或減1 不能再后增量運算符和操作數之間插入換行符,如果插入了換行符,JavaScript將會把操作數當做一條單獨的語句,并在其之前補上一個分號舉例:舉例:x=x+1和+x并不一定相等 如果x為“1”,那么x=x+1的結果就是“11”,而+x的結果是2“/”和和“%”運算符運算符規則:規則:當一個整數除以另一個整數時,得到的結果將是浮點型 當除數為0的運算結果為正無窮大或負無窮大,0/0的結果是NaN,所有這些運算均不會報錯 求模操作的結果符號和第一個操作數的符號保持一致 求模操作也適用于浮點數舉例:舉例:5/2 /=2.5而不是2 -5%2 /=-1 6.5

37、%2 /=0.212/17/202125JavaScript運算符運算符第二章(JavaScript語言)l位運算符位運算符JavaScript的位運算符主要有:&:按位與|:按位或:按位非:按位異或:右位移:無符號右移12/17/202126JavaScript運算符運算符第二章(JavaScript語言)規則:規則:位運算要求它的操作數是整數 位運算會將NaN、Infinity和-Infinity轉換為0 按位與,只有兩個操作數中相對應的位都是1,結果中的這一位才是1 按位或,如果其中一個操作數相應的位為1,或者兩個操作數相應位都是1,那么結果中的這一位就為1 按位異或,如果兩個操

38、作數中只有一個相應位為1,那么結果中的這一位就是1 按位非,將操作數的所有位取反 左移,將第一個操作數的所有二進制位進行左移,移動的位數由第二個操作數指定,新的一位用0補充 右移,將第一個操作數的所有二進制位進行右移,移動的位數由第二個操作數指定,如果第一個操作數是正數,移位后用0補充,如果第一個操作數是負的,移位后用1補充 無符號右移,與右移規則基本一致,只是左邊的高位總是補充0舉例:舉例:0 x1234 & 0 x00FF =0 x0034 0 x1234 | 0 x00FF =0 x12FF 0 xFF00 0 x00FF =0 x12FF 0 x0F =0 xFFFFFFF0

39、71 =3 -71 =-4 -14=0 x0FFFFFFF12/17/202127JavaScript運算符運算符第二章(JavaScript語言)l比較運算符比較運算符JavaScript的比較運算符主要有:大于=:大于等于:小于=:小于等于!=:不等于=:等于!=:嚴格不等于=:嚴格等于“=”嚴格相等運算符嚴格相等運算符規則:規則:“=”首先計算其操作數的值,然后比較這兩個值,比較過程沒有任何類型轉換首先計算其操作數的值,然后比較這兩個值,比較過程沒有任何類型轉換 如果兩個值類型不相同,則它們不相等 如果兩個值都是null或者都是undefined,則它們不相等 如果兩個值都是布爾值真或假

40、,則它們不相等12/17/202128JavaScript運算符運算符第二章(JavaScript語言)“=”嚴格相等運算符嚴格相等運算符規則:規則:如果其中一個值是NaN,或者兩個值都是NaN,則它們不相等 如果兩個值為數字且數值相等,則它們相等 如果一個值為0,另一個值為-0,則它們相等 如果兩個值為字符串,且所含的對應位上的16位數完全相等,則它們相等 如果它們的長度或內容不同,則它們不等 如果兩個引用值指向同一個對象、數組或函數,則它們相等“=”相等運算符相等運算符規則:規則:如果兩個操作數不是同一類型,首先會嘗試進行一些類型轉換,然后進行比較如果兩個操作數不是同一類型,首先會嘗試進行

41、一些類型轉換,然后進行比較 如果兩個操作數類型不同,如果兩個操作數類型不同,“=” 也可能會認為它們相等,檢測相等將會遵守如下也可能會認為它們相等,檢測相等將會遵守如下規則和類型轉換:規則和類型轉換: 如果一個值是null,另一個是undefined,則它們相等 如果一個值是數字,另一個是字符串,先將字符串轉換為數字,然后使用轉換后的值進行比較 如果一個值true,則將其轉換為1再進行比較;如果一個值false,則將其轉換為0再進行比較12/17/202129JavaScript運算符運算符第二章(JavaScript語言)“=”相等運算符相等運算符規則:規則:如果一個值是對象,另一個值是數字

42、或字符串,則先將對象轉換為原始值,然后再進行比較 其他不同類型之間的比較均不相等()、()、(=)規則:規則:如果兩個操作數是對象,先轉換為原始值; 在對象轉換為原始值后,如果兩個操作數都是字符串,那么將按照該字符串的16位Unicode字符的索引順序進行比較 在對象轉換為原始值后,如果至少有一個操作數不是字符串,那么兩個操作數都將轉換為數字進行數值比較 Infinity比其他任何數字都大,-Infinity比其他任何數字都小,如果其中一個操作數是NaN,那么比較操作符總返回false12/17/202130JavaScript運算符運算符第二章(JavaScript語言)in運算符運算符規則

43、:規則:in運算符希望它的左操作數是一個字符串或可以轉換為字符串,希望它的右操作數是一個對象 如果右側對象擁有一個名為左操作數值的屬性名,那么返回trueinstanceof運算符運算符規則:規則:instanceof運算符希望左操作數是一個對象,右操作數標識對象的類 如果左側的對象是右側的實例,則返回true12/17/202131JavaScript運算符運算符第二章(JavaScript語言)l邏輯運算符邏輯運算符JavaScript的邏輯運算符主要有:邏輯與(&)邏輯或(|)邏輯非(!)“&”邏輯與運算符邏輯與運算符三層理解:三層理解:第一層:當操作數都是布爾值的時候,

44、“&”對兩個值執行“與”操作,只有在第一個操作數和第二個操作數都是true的時候,它才返回true;如果其中一個操作數是false,它返回false 第二層:當操作數不一定是布爾值的時候,有些值可以當做“真值”和“假值”(如:false、null、undefined、0、-0、NaN和都是假值,其他的值包括對象都是真值),“&”可以對真值和假值進行“與”操作,如果兩個操作數都是真值,那么返回一個真值;否則,至少一個操作數是假值的話,則返回一個假值 第三層:“真值”和“假值”到底是什么值呢,“&”首先計算左操作數的值,如果結果是假值,那么整個表達式的結果一定也是假值,因此

45、“&”簡單地返回做操作數的值,而并不會對右操作數進行計算;如果左操作數是真值,那么整個表達式的結果則依賴于右操作數的值,如果右操作數是真值,那么整個表達式的值一定是真值;如果是假值,那么整個表達式的值一定是假值,因此“&”將計算右操作數的值并返回作為整個表達式的計算結果12/17/202132JavaScript運算符運算符第二章(JavaScript語言)“|”邏輯或運算符邏輯或運算符規則:規則:首先計算左操作數的值,如果結果為真,那么返回這個真值;否則,計算右操作數的值,并返回這個表達式的計算結果“!”邏輯非運算符邏輯非運算符規則:規則:首先將操作數轉換為布爾值,然后再對布

46、爾值求反,也就是說“!”總是返回true或false,并且我們可以通過使用兩次邏輯非運算來得到一個值的等價布爾值12/17/202133JavaScript運算符運算符第二章(JavaScript語言)l賦值運算符賦值運算符JavaScript使用“=”作為賦值運算符號來給變量或者屬性賦值“=”運算符運算符規則:規則:“=”具有非常低的優先級,通常在一個較長的表達式中用到了一條賦值語句的值的時候,需要補充圓括號以保證正確的運算順序 賦值操作符的結合性是從右至左 i=j=k=0 /把三個變量初始化為0加強的賦值運算符加強的賦值運算符12/17/202134JavaScript運算符運算符第二章(

47、JavaScript語言)+=:對于x+=y,對應于x=x+y-=:對于x-=y,對應于x=x-y*=:對于x*=y,對應于x=x*y/=:對于x/=y,對應于x=x/y%=:對于x%=y,對應于x=x%y&=:對于x&=y,對應于x=x&y|=:對于x|=y,對應于x=x|y=:對于x=y,對應于x=xy=:對于x=y,對應于x=x=:對于x=y,對應于x=xy=:對于x=y,對應于x=xyl其他運算符其他運算符條件運算符(條件運算符(?:)規則:規則:條件運算符的操作數可以是任意類型,第一個操作數當成布爾值,如果它是真值,那么僵計算第二個操作數,并返回計算結果;否則

48、,如果第一個操作數是假值,那么將計算第三個操作數,并返回其計算結果;第二個和第三個操作數總是會計算其中之一,不可能兩者同時執行typeof運算符運算符規則:規則:typeof操作數可以是任意類型,返回值表示操作數類型的一個字符串賦值操作符的結合性是從右至左12/17/202135JavaScript運算符運算符第二章(JavaScript語言)l其他運算符其他運算符delete運算符運算符 delete是一元操作符,它用來刪除對象屬性或者數組元素規則:規則:當刪除一個屬性時,這個屬性將不再存在,而不是僅僅設置了一個undefined的值 如果刪除成功,delete將會返回true,然而并不是所

49、有的屬性都可刪除,一些內置核心和客戶端屬性是不能刪除的,用戶通過var語句聲明的變量不能刪除;通過function語句定義的函數和函數參數也不能刪除void運算符運算符 void是一元運算符,它在操作數之前,操作數可以是任意類型,作用是操作數會照常計算,但忽略計算結果并返回undefined逗號運算符(,)逗號運算符(,) 逗號運算符是二元運算符,它的操作數可以是任意類型,它首先計算左操作數,然后計算右操作數,最后返回右操作數的值12/17/202136JavaScript運算符運算符第二章(JavaScript語言)l表達式語句表達式語句賦值語句賦值語句greeting=Hello+name

50、;i *=3;delete o.xcounter+;函數調用函數調用alert(greeting);windows.close();12/17/202137JavaScrip語句語句第二章(JavaScript語言)l復合語句和空語句復合語句和空語句復合語句復合語句將多條語句聯合在一起,形成一條復合語句將多條語句聯合在一起,形成一條復合語句 x=Math.PI; cx=Math.cos(x); console.log(cos(x)=+cx; JavaScript規定每個復合語句可以有一個子語句,可以通過大括號將多個其他語句包規定每個復合語句可以有一個子語句,可以通過大括號將多個其他語句包含起來

51、組成語句塊放入子語句中含起來組成語句塊放入子語句中 語句塊的結尾不需要分號,快中的子語句必須分號結束語句塊的結尾不需要分號,快中的子語句必須分號結束空語句空語句;for(i=0;ia.length;ai+=0);JavaScript解釋執行空語句時顯然不會執行任何動作;解釋執行空語句時顯然不會執行任何動作;空語句允許包含空語句允許包含0個子語句個子語句12/17/202138JavaScrip語句語句第二章(JavaScript語言)l聲明語句聲明語句var語句語句var語句用來聲明一個或者多個變量語法:語法:var name_1 =value_1,.,name_n =value_n規則:規則

52、:如果var語句出現在函數體內,那么它定義的是一個局部變量;如果var語句出現在頂層代碼,它聲明的是全局變量,無法通過delete刪除 如果var語句中的變量沒有指定初始值,那么這個變量的值初始為undefined 多次聲明同一個變量時可以的Function語句語句 function用來定義函數 語法:語法:function funcname(arg1,arg2.,argn) statements 規則:規則:function語句里的花括號是必須的 function語句通常出現在JavaScript代碼的最頂層,也可嵌套在其他函數體內,但嵌套時函數聲明只能出現在所嵌套函數的頂部。 functi

53、on語句創建的變量也是無法刪除的12/17/202139JavaScrip語句語句第二章(JavaScript語言)l條件語句條件語句if語句語句【2.5/if】語法:語法:if(表達式)(表達式) 子語句子語句 ifelse語句語句【2.5/errif】語法:語法:if(表達式)(表達式) 子語句子語句 else 子語句子語句 12/17/202140JavaScrip語句語句第二章(JavaScript語言)l條件語句條件語句Ifelse if語句語句語法:語法:if(表達式)(表達式) 子語句子語句 else if(表達式)(表達式) 子語句子語句 ./多條多條else if語句語句 e

54、lse /可以省略可以省略 子語句子語句 12/17/202141JavaScrip語句語句第二章(JavaScript語言)l條件語句條件語句switch語句語句【2.5/switch】 語法:語法:switch(表達式)(表達式) case 值值1:子語句:子語句1 break; case 值值2:子語句:子語句2 break; . case 值值n:子語句:子語句n break; default:子語句子語句 規則:規則:JavaScript的switch語句中可省略case塊后的break語句,如果省略將直接執行后面case塊里的代碼 JavaScript的switch語句里的條件變量

55、可以是任意類型12/17/202142JavaScrip語句語句第二章(JavaScript語言)l循環語句循環語句while語句語句【2.5/while】 語法:語法:while(表達式)(表達式) 子語句;子語句; do while語句語句【2.5/doWhile】 語法:語法:do 子語句;子語句; while(表達式);(表達式);for語句語句【2.5/deadFor】 語法:語法:for(表達式(表達式1;表達式;表達式2;表達式;表達式3) 子語句;子語句; 12/17/202143JavaScrip語句語句第二章(JavaScript語言)l循環語句循環語句for/in語句語句

56、【2.5/fonin2】 for in循環實質上是一種foreach循環,它主要有兩個作用:遍歷數組里的所有數組元素遍歷JavaScript對象的所有屬性 語法:語法:for(變量變量 in 對象)對象) 子語句;子語句; 注意:注意:for/in語句并不會遍歷對象的所有屬性,只有語句并不會遍歷對象的所有屬性,只有“可枚舉可枚舉”的屬性才會遍歷到,的屬性才會遍歷到,對于內置方法、內置屬性都是不可枚舉的對于內置方法、內置屬性都是不可枚舉的12/17/202144JavaScrip語句語句第二章(JavaScript語言)l跳轉語句跳轉語句break語句語句單獨使用break語句,將立即退出最內層

57、的循環或switch語句【2.5/break】 語法:語法:break; 規則:規則:只能在循環或switch語句內用break關鍵字后面跟隨一個語句標簽,將跳轉到這個標簽所標識的語句塊的結束或直接終止這個閉合語句塊的執行【2.5/breaklable】語法:語法:break 標簽名;標簽名;規則:規則:break和標簽名之間沒有冒號,不能換行 對于一個帶標簽的函數定義語句來說,不能從函數內部通過這個標簽來跳轉到函數外部12/17/202145JavaScrip語句語句第二章(JavaScript語言)l跳轉語句跳轉語句continue語句語句單獨使用continue語句,將轉到下一次循環【2

58、.5/continue】 語法:語法:continue; 規則:規則:只能在循環體內使用 continue在不同的循環中行為區別:在while循環中,在循環開始處指定的表達式會重復檢測,如果為true,循環體會從頭開始執行在do.while循環中,程序的執行直接跳到循環結尾處,這時會重新判斷循環條件,之后才會繼續下一次循環在for循環中,首先計算自增表達式,然后再次檢測終止條件,用以判斷是否執行循環體在for/in循環中,循環開始遍歷下一個屬性,然后將這個屬性名賦值指定變量continue帶標簽,將終止當前循環,而跳到標簽所在循環處開始下一次循環【2.5/continuelable】語法:語法

59、:continue 標簽名;標簽名;規則:規則:只能在循環體內使用 continue和標簽名之間不能有空格12/17/202146JavaScrip語句語句第二章(JavaScript語言)l跳轉語句跳轉語句return語句語句【2.5/return】 語法:語法:return 返回值;返回值; 規則:規則:return語句只能在函數體內出現,當執行到return語句時函數終止執行 return語句單獨使用可不帶返回值,這樣函數會返回undefined結果throw語句語句【2.5/throw】 語法:語法:return 返回值;返回值; 規則:規則:return語句只能在函數體內出現,當執行

60、到return語句時函數終止執行 return語句單獨使用可不帶返回值,這樣函數會返回undefined結果12/17/202147JavaScrip語句語句第二章(JavaScript語言)l跳轉語句跳轉語句異常處理語句異常處理語句【2.5/throwCatch】 語法:語法:try 子語句子語句catch(e) 子語句子語句finally 子語句子語句; 規則:規則:JavaScript中只有一個異常類Error,無須在定義函數時聲明拋出該異常,所以沒有throws關鍵字 JavaScript中catch語句后括號里的異常實例無須聲明類型 JavaScript只有一個異常類,所以try塊后最多只能有一個catch塊 獲取異常的描述信息是通過異常對象的message屬性12/1

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論