



版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第一章詞法結構Js 是用 Unicode 字符集編寫的;js 區(qū)分大小寫,而html 不區(qū)分;直接量;標志符合保留字;分號可選,注意良好的編程習慣。第二章類型、值和變量1.數(shù)字Js 不區(qū)分整數(shù)值和浮點數(shù)值,所有值都用浮點數(shù)值表示。整型直接量有十六進制( ox 或 Ox 前綴),八進制(0 開始,可能不支持) ,還有十進制。Infinity:無窮大-Infinity:負無窮大NaN != NaN (返回true)0 = -0Js 采用一種二進制表示法,不能精確到類似數(shù),如 10 分而非 0.1 元0.1 這樣的數(shù)字,應避免小數(shù),使用大整2.文本字符串直接量轉義字符:.字符串:js 中字符串是固定
2、不變的,使用方法后都返回新字符串,字符串本身不改變。3.布爾值任意字符串都可以轉換為布爾值,如下列都轉換為falseundefinednull0-0NaN“”布爾值包含toString() 方法4.null 和 undefinedtypeof(null)/ 返回 object, 可以認為 null 是一個特殊的對象值,即“非對象”。typeof(undefined)/返回 undefine, 表明這個值是這個類型的唯一成員。兩者都不包含任何屬性和方法。5.全局對象比如 Math 和 JSON,全局對象的屬性是全局定義的符號,js 程序可以直接使用。在代碼最頂級,this 可以直接引用全局對象。
3、如果代碼聲明了一個全局變量,這個全局變量就是全局對象的一個屬性。6.包裝對象Js 對象是屬性或已命名值得集合,通過(.)引用屬性值,屬性值是函數(shù)時,稱其為方法。存取字符串、 數(shù)字、 布爾值的屬性時創(chuàng)建的臨時對象,對象,即它們三者并不是對象,但表現(xiàn)出有屬性。它只是偶爾用來區(qū)分原始類型和可通過 String (), Number ()或 Boollen ()顯式創(chuàng)建包裝對象:var s = new String();= 視原始值和包裝對象相等,= 不等。7.原始值( undefined、 null 、布爾值、數(shù)字和字符串)是不可改變的,修改字符串實際上返回了一個新的字符串, 原字符串并不改變。 原
4、始值的比較是值的比較, 只有它們的值相等時才相等。對象是可變的,值可以修改,但對象的比較并不是值的比較,而是引用的比較,當且它們引用同一個基對象才相等。8.類型轉換( 1)= 符號會偏向把兩邊數(shù)據(jù)類型轉換為數(shù)字進行比較。且其從不試圖將其操作數(shù)轉換為布爾值。( 2)顯式類型轉換:Number()/等價于 x+ parseInt()/只解析整數(shù),可接受第二個參數(shù):parseInt(“11”,2) 結果為 3( 1*2+1 )parseFloat()/可解析整數(shù)和浮點數(shù)。Boolean()/ 等價于 +x,一元運算符String()/等價于 !x,一元“!”運算符對操作數(shù)轉換為布爾值并取反。Obje
5、ct()方法(都是轉換為字符串) :toString()/轉換為字符串, ()中可以接受轉換基數(shù)toFixed()/根據(jù)小數(shù)點后的指定位數(shù)將數(shù)字轉換為字符串,不使用指數(shù)記數(shù)。toExponential()/ 參數(shù)指定小數(shù)點后面位數(shù),且小數(shù)點前只有一位,可使用指數(shù)記數(shù)。toPrecision()/參數(shù)指定有效位數(shù),有效數(shù)字小于數(shù)字整數(shù)部分數(shù)用指數(shù)形式。(3)對象轉換為原始值toString()valueOf()/ 返回對象本身9.變量聲明Js 是動態(tài)語言類型,聲明變量時不用指明類型。10.變量作用域在函數(shù)體內,局部變量的優(yōu)先級高于同名的全局變量。聲明局部變量時必須使用 var 語句,不然會生成全
6、局變量。Js 中沒有塊級作用域,取而代之的是函數(shù)作用域:變量在聲明它們的函數(shù)體以及這個函數(shù)體嵌套的任意函數(shù)體內都是有定義的。即函數(shù)內的變量聲明“提前” 至函數(shù)體頂部, 同時變量初始化留在原來的位置。Js 全局變量是全局變量的屬性,用var 聲明的變量是不可配置的,無法用delete 刪除未聲明的變量可配置。作用域鏈第三章表達式和運算符1.原始表達式如: 1.123“hello ” /pattern/2.對象和數(shù)組的初始化表達式如: var x = ;var y = ;3.函數(shù)定義表達式var squre = function(x) return x*x;4.屬性訪問表達式兩種訪問方式:var
7、o = x:1,y:z:3;o.x;o“x”5.調用表達式是一種調用(或者執(zhí)行)函數(shù)或方法的語法表示。如: f(0)Math.max(x,y,z)a.sort()6.對象創(chuàng)建表達式創(chuàng)建一個對象并調用一個函數(shù)(構造函數(shù))初始化新對象的屬性如: new object()new point(2,3)new object7.運算符( 1)左值:表達式只能出現(xiàn)在賦值運算符的左側。 Js 中變量,對象屬性和數(shù)組元素都是左值, ECMAScript 規(guī)范允許內置函數(shù)返回一個左值,但自定義的函數(shù)不能返回左值。( 2)“+”運算符:二元加法運算符,優(yōu)先考慮為字符串,兩側都不是字符串時理解為數(shù)字。對于不是原始值的
8、操作數(shù)會先做類型轉換。對象到原始值的轉換規(guī)則:日期對象通過toString()方法執(zhí)行轉換, 其他對象則通過valueOF()方法執(zhí)行轉換(如果能返回一個原始值) 。但大多數(shù)對象都不具備可用的 valueOf()方法,則會通過 toString ()方法來轉換。(3)一元運算符“+”,“ -”:根據(jù)需要把操作數(shù)轉換為數(shù)字“+ ”:在操作數(shù)之前(前增量) ,對操作數(shù)進行增量計算,并返回計算后的值。在操作數(shù)之后(后增量),對操作時進行增量計算,但返回未做增量計算的值。如: var i = 1, j = +i;/i 和 j 的值都是2var I = I, j = i+/i=2 , j=1“- ”:類
9、似上述。8.關系表達式( 1)相等和不等。“=”:得到或賦值。“= ”:相等。 / !=“= ”:嚴格相等。/!=注意: NaN 和其他任何值都不相等。(2)比較運算符操作數(shù)只有是數(shù)字和字符串才能真正執(zhí)行比較操作,不是會進行類型轉換。相比“ +”運算符,字符運算符更偏愛數(shù)字,只有兩個操作數(shù)都是字符串時才會進行字符串的比較。(3) in 運算符希望左操作數(shù)是一個字符串或者可以轉換為字符串,右操作數(shù)是一個對象。如果右側的對象擁有一個名為左操作數(shù)值的屬性名,則返回true。注意:var point = x:1, y:2”toString ”in point/truetoString in point
10、/ false( 4) instanceof 運算符希望左操作數(shù)是一個對象,右操作數(shù)標識對象的類。如果左側對象是右側類的實例,則返回 true,否則 false。Js 對象的類是通過初始化它們的構造函數(shù)來定義的, 則右操作數(shù)是一個函數(shù)。如:var d = new Date(); d instrnceof Date; d instrnceof Object; d instrnceof Number;/true/true/false原型鏈9.邏輯表達式假值: falsenullundefined0-0NaN則其他的值包括對象都是真值。“&& :左操作數(shù)為真值時則返回右操作數(shù)的結果。
11、左操作數(shù)為假值時則返回左操作數(shù)的的結果,即不計算右操作數(shù)的值。“|”:先計算左操作數(shù)的值,結果為真值則返回這個結果。否則返回右操作數(shù)結果。“!”:一元運算符,將操作數(shù)的布爾值求反。10.賦值表達式“=”Datai+ *=2;Datai+ =Datai+ * 2;/結果不一樣11.eval()解釋運行由js 源代碼組成的字符串,并產生一個值。eval()是一個函數(shù),但被當成運算符對待。只傳入一個參數(shù),如果參數(shù)不是字符串則直接返回這個值。是字符串則會當成js 代碼進行編譯,執(zhí)行后將返回最后一個表達式或語句的值。eval()使用了調用它的變量作用域環(huán)境。如:假如已定義一個局部變量xeval(“x”)
12、/ 返回局部變量的值全局 eval()通過別名調用時,eval()會將其字符串當成頂級的全局代碼來執(zhí)行,即可能會定義新的全局變量和全局函數(shù),或給全局函數(shù)賦值。Ie9 之前通過execscript()的全局函數(shù)來完成全局 eval()的功能。注:嚴格模式下eval 不能在局部作用域定義新的變量或函數(shù),可查詢或更改。11.其他運算符“?:”typeof : 一元運算符,返回值為表示操作數(shù)類型的一個字符串。注: typeof( null )返回 object函數(shù)返回 function ,而不是 object。 Es3 中對所有內置可執(zhí)行對象,一律返回 function , es5 中擴充到所有可執(zhí)行
13、對象,包括內置對象和宿主對象。Delete:一元操作符,刪除對象屬性或者數(shù)組元素,刪除成功返回true,否則返回 false。delete 希望操作數(shù)是一個左值,不是左值則不做任何操作返回true,一些內置核心和客戶端屬性不能刪除, var 語句聲明的變量不能刪除,通過function 語句定義的函數(shù)和函數(shù)參數(shù)也不能刪除。不能刪除數(shù)組的長度,只能刪除其屬性。Void:一元運算符,操作數(shù)會照常計算,但會忽略結算結果并返回undefined。“,”:二元運算符,先計算左操作數(shù),再計算右操作數(shù)。第四章語句表達式計算出一個值,但語句用來執(zhí)行使某件事發(fā)生。1.語句塊:多條語句連接在一起,花括號括起。Js
14、 中沒有塊級作用域,則語句塊中聲明的變量并不是語句塊私有的。空語句:;如:for(i=0;i<a.length; ai+=0);2.聲明語句: varfunction f() 函數(shù)聲明語句可嵌套在其他函數(shù)體內,但此時只能出現(xiàn)在所嵌套函數(shù)的頂部。3.條件語句ifelse ifswitch :“相同” 是按照“ = ”運算符進行比較的。 return 和 break 都可以用于終止語句。Es 標準允許每個 case關鍵字跟隨任意的表達式, 用的表較多的是數(shù)字和字符串。可以放置在 switch 語句內的任何地方。swichdefault4.循環(huán)Whilefor/indo/whilefor(其中
15、三個表達式任一個都可忽略,但兩個分號必不可少。: for(variable in object)strtement)variable必須是一個適用于賦值表達式左值的值,通常是一個變量名。Object是一個表達式,結算結果是一個對象。如: for(var p in o)console.log(op);for/in循環(huán)并不會遍歷對象的所有屬性,只有“可枚舉”的屬性才會遍歷到。5.跳轉標簽語句:即給語句加上標簽,如:mainloop: while()注意: break 和 continue 是 js 中唯一可以使用語句標簽的語句。標簽的命名空間和變量或函數(shù)的命名空間不同,即它們名字可以相同。Brea
16、k :單獨使用的作用是立即退出最內層的循環(huán)或 switch 語句。允許在后面跟隨一個標簽語句, 作用是程序將跳轉到這個標簽所標識的語句塊的結束, 或者直接終止這個閉合語句塊的執(zhí)行。需要注意的是 break 的控制權無法越過函數(shù)的邊界,比如,對一條帶標簽的函數(shù)定義語句來說,不能從函數(shù)內部通過這個標簽來跳轉到函數(shù)外部。Continue :轉到下一次循環(huán),可帶有標簽。Return:沒有指定返回值都返回undefined 。throw : throw expression顯式拋出異常。expression 可以是任意類型,通常采用error 類型和其子類型,一個 error 對象有一個 name 屬性
17、表示錯誤類型, message屬性用于存放傳遞給構造函數(shù)的字符串。拋出異常時停止當前執(zhí)行的邏輯,調至就近的異常處理程序( catch)。try/carth/finally: try 從句定義了需要處理的異常所在的代碼塊。catch 跟在其后,處理異常。 Finally 放置清理代碼,不管try 中是否有異常,finally 塊中的邏輯都會執(zhí)行。trycatch(e)finallycatch 圓括號內是一個標志符,當捕獲到一個異常時,相關值賦值給這個參數(shù),這個參數(shù)具有塊級作用域,只在catch 中定義。6.其他語句類型with :用于臨時作用域鏈with (object) statement/
18、這條語句將object 添加到作用域鏈的頭部,然后執(zhí)行statement,最后把作用域鏈恢復到原始狀態(tài)。如: with(document.forms0)name.value = “”;address.value = “”;email.value = “”;/ document.forms0.address.value注意: with 語句提供了一種讀取屬性的快捷方式,但不能創(chuàng)建屬性。debugger:當調試程序可用并運行時,js 解釋器將會以調試模式運行。實際上這條語句用來產生一個斷點。如:function(o)if(o =undefined) debugger;/ 用于臨時測試“use st
19、rict”:說明后續(xù)的代碼將會解析為嚴格代碼。var hasStrictMode = (function()“use strict”; return this=undefined();/ 判斷是否支持嚴格模式。即嚴格模式下調用的函數(shù)中的一個this值是undefined ,非嚴格模式中,總是全局對象。第五章對象對象是一種復合值,可看做是屬性的無序集合。Js 對象還可以從一個稱為原型的對象繼承屬性。對象的方法通常是屬性的繼承。屬性特征( property attribute ):可寫、可枚舉(是否可以通過for、in 循環(huán)返回該屬性) 、可配置(可以刪除或修改該屬性)。對象特征:對象的原型( p
20、rototype)指向另外一個對象,本對象的屬性繼承自它的原型對象。對象的類( class)是一個標識對象類型的字符串。對象的擴展標記指明了是否可以向該對象添加新屬性。內置對象宿主對象自定義對象自由屬性繼承屬性1.創(chuàng)建對象( 1)對象直接量:var point = x:2,y:3;( 2)通過 new 創(chuàng)建對象:創(chuàng)建并初始化一個新對象,如:var o = new object();( 3)原型:每一個對象(null 除外)都從原型繼承一個屬性。所有對象直接量都具有同一個原型對象,通過object,prototype 獲得引用。new Date() 創(chuàng)建的對象的原型就是totyp
21、totypenew object() :totype沒有原型的對象不多,如totype , ,它不繼承任何屬性( 4) object.create(),如var o = object.create(x:1,y:2);/o 繼承了屬性.x 和y,使用第一個參數(shù)作為它的原型(可以是步的描述。null ),第二個參數(shù)用于對對象的屬性進行進一例:通過原型繼承創(chuàng)建一個新對象,即函數(shù)返回的新對象繼承了參數(shù)對象的屬性:function inherit(p)if (p = null) throw TypeError();if(Object.crea
22、te)return Object.create(p);var t = typeof p;if( t != ”object”&& t!= ”function ”) throw TypeError();function f();totype = p;return new f();2.屬性的查詢和設置如 ;var author = book.author;/ 得到author屬性book.edition = 6;/ 創(chuàng)建一個edition 屬性( 1) object “property ” / 關聯(lián)數(shù)組, js 對象都是關聯(lián)數(shù)組。“ “. 后的是一個標識符,不可以修改, 而
23、 中的屬性名可以修改,因為它們是數(shù)據(jù)類型。( 2)繼承: js 對象具有“自有屬性“,也有一些屬性是從原型對象繼承而來的。var unitcircle = r:1;var c = inherit(unitcicle);c,x = 1; c.y = 2;/ c 定義了兩個屬性c.r = 2;/ 覆蓋了繼承而來的屬性unitcicle.r;/ 結果為 1,原型對象沒有修改。( 3)屬性訪問錯誤:查詢一個不存在的屬性不會報錯,如果在自身屬性和繼承的屬性沒有找到,返回 undefined。給 null和 defined 設置屬性會報錯,只讀的屬性不能重新賦值( defineProperty() 中可以
24、對可配置的只讀屬性重新賦值。)。3.刪除屬性:delete,它只斷開屬性和宿主對象的聯(lián)系,而不會去操作屬性中的屬性。只能刪除自有屬性,不能刪除繼承屬性(要在定義這個屬性的原型上刪除,影響到繼承這個原型的對象)。delete 不能刪除那些可配置性為false 的屬性。delete x/在嚴格模式下報錯,非嚴格模式不報錯delete this.x;/正常會4.檢測屬性“ in”運算符:如果對象的自由屬性或繼承屬性中包含這個屬性返回不存在的屬性和存在但值為undefined 的屬性。true。 In可以區(qū)分var o = x: undefined o.x != undefinedo.y != und
25、efined/false / false屬性存在,但值為屬性不存在undefined“x”in o/ true 屬性存在“y”in o/ false屬性不存在hasOwnPreperty(): 用來檢測給定的名字是否是對象的自由屬性,返回布爾值。propertyIsEnumerable ():只有檢測到時自由屬性且這個屬性的可枚舉性為true時才返回 true。5.枚舉屬性for/in 循環(huán):遍歷所有可枚舉的屬性,包括自有屬性和繼承屬性。Object.key() :是一個函數(shù),返回一個數(shù)組,這個數(shù)組由對象中可枚舉的自有屬性組成(不包括屬性的值)。Object.getOwnPropertyNam
26、es(): 與上述類似,只是它返回對象的所有自由屬性的名稱,包括不可枚舉的屬性。6.屬性 getter 和 setter由 getter 和 setter 定義的屬性稱為“存儲器屬性” ,不同于數(shù)據(jù)屬性,數(shù)據(jù)屬性只是一個簡單的值。定義存儲器屬性如下:var o = data_prop: value; /普通數(shù)據(jù)屬性get accessor_prop() /*這里是函數(shù)體*/set accessor_prop(value) /*這里是函數(shù)體*/ / 這里函數(shù)沒有用 function 關鍵字,而是 get 和 set和數(shù)據(jù)屬性一樣。存儲性屬性是可以繼承的7.屬性的特性除了名字和值之外,屬性還包含一
27、些標識它們可寫、可枚舉和可配置的特性。在es3中無法設置這些特性,所有通過es3 的程序創(chuàng)建的屬性都是可寫、可枚舉和可配置的,且無法對這些特性做修改。可認為一個屬性包含一個名字和4 個特性:值(value)、可寫性( writable )、可枚舉性( enumerable)和可配置型( configurable )。存儲器屬性不具有值特性可寫性(由 setter 方法存在與否決定) ,它的四個屬性是:讀取( get)、寫入( set)、可枚舉性和可配置性。 Es 中定義了一個名為“屬性描述符” ( property descriptor )的對象代表那四個屬性。Object.getOwnpro
28、pertyDescriptor() :獲得某個對象的自有的特定屬性的屬性描述符。要想獲得繼承的屬性的特性,需要遍歷原型鏈( Object.getPrototypeOf() )Object.definePeoperty(): 設置屬性的特性,要么修改已有屬性要么新建自有屬性object.definePeoperty(o, “x”, (writable: false);設置多個屬性:Object.definePeopertys()8.對象的三個屬性(1)原型屬性:對象的原型屬性是用來繼承屬性的。 Es5 中可使用 Object.getPrototypeof() 可查詢原型。Es3 中使用表達式o.
29、totype 來檢測一個對象的原型。var p = x:1;var o = Object.create(p);p.isProtrtypeOf(o);/ trueo 是p 的原型Ototype.isPrototypeOf(o)/ truep 繼承自totype(2)類屬性:是一個字符串,用于表示對象的類型信息。自定義 classof 函數(shù)(3)可擴展性:用于表示是否可以給對象添加新屬性。Object.esExtensible(): 判斷是否可擴展Object,preventExtensions() :將對象轉換為不可以擴展的,轉
30、換后無法設為可擴展。 Object,seal() 和 Object.preventExtensions() 類似,除了能將對象設置為不可擴展的, 還可以將對象的所有自有屬性都設置為不可配置的,即屬性不能刪除或配置。對于那些已經(jīng)封閉(sealed)起來的對象是不能解封的。可以使用Object.isSealed()來檢測對象是否封閉。Object.freeze():將對象“凍結” ,將對象設為不可擴展,屬性設為不可配置,還可以將它自有的所有數(shù)據(jù)屬性設置為只讀的。Onject.isfrozen() 檢測。9.序列化對象:是指將對象的狀態(tài)轉化為字符串,也可將字符串還還原為對象。和 JSON.parse
31、()用來序列化和還原 js 對象。 JSON.stringify()Es5中JSON( javescript object Notion ): javascript 對象表示法。10.對象方法toString ()toLocaleString ():返回表示這個對象的本地字符串。toJSON()ValueOf第六章數(shù)組數(shù)組是值的有序集合1. 數(shù)組創(chuàng)建:如: var b = new Array(); var s = ;2.數(shù)組元素的讀和寫注:a-1.23 = true;/ 即屬性名是負整數(shù),這里新建一個名為“-1.23”的屬性3.稀疏數(shù)組:包含0 開始的不連續(xù)索引的數(shù)組。如: a = new A
32、rray(5)/ 數(shù)組沒有元素,但是有值 undefineda1000 = 0 ;/ 測試結果同上a.length = 5 。 Firebug中測試注:當在數(shù)組直接量中省略值時不會創(chuàng)建稀疏數(shù)組。如:var a1 = ,;/有值 undefined舊版本中, 1,3 和 1,undefined,3 結果是一模一樣的4.數(shù)組長度: length 是數(shù)組的一個屬性。a = 1,2,3,4,5;a.length = 3;/ 現(xiàn)在 a 為 1,2,35.數(shù)組元素的刪除和添加添加: push刪除: delete 刪除數(shù)組元素后值變?yōu)?undefined ,變?yōu)榱讼∈钄?shù)組,但不修改數(shù)組的 length 屬性
33、,索引值也不變。6.數(shù)組遍歷for 循環(huán)for/inforEach7.多維數(shù)組: js 不支持真正的多維數(shù)組,但可以用數(shù)組的嵌套來近似。8.es3 中的數(shù)組方法( 1) join() :將數(shù)組中的所有元素都轉化為字符串并連接在一起,返回最后生成的字符串,默認使用逗號分隔。但不該變原數(shù)組。如:var a =1,2,3;a.join();/ ”1,2,3”a.join( “”)/ “123”( 2) reverse():將數(shù)組中元素順序顛倒,返回逆序的數(shù)組,原數(shù)組改變。( 3) sort() :將數(shù)組中的元素排序并返回排序后的數(shù)組,改變原數(shù)組。不帶參數(shù)時按字母表順序排序。傳入一個比較函數(shù)時,如下:
34、var a =1,10,3;a.sort( function(a,b) return a-b;)/ 根據(jù)數(shù)值順序返回,即 a 應該在前的話返回小于 0 的值,在后返回小于0 的值。(4) concat() :創(chuàng)建并返回一個新數(shù)組,不會修改調用的數(shù)組。如:var a = 1,2,3;a.concat(4,5)a,concat(4,5)/ 返回 1,2,3,4,5/ 同上a.concat(4,5,6,7)/ 返回 1,2,3,4,5,6,7(5) slice(): 指定數(shù)組的一個片段或子數(shù)組,不會修改調用的數(shù)組。var a = 1,2,3,4,5,6;a.slice(1,3);/ 返回2,3,4,
35、 根據(jù)索引值(6) splice() :在數(shù)組中插入或刪除元素的通用方法,改變調用的數(shù)組。如:var a = 1,2,3,4,5,6,7,8;a.splice(4)/ 返回 5,6,7,8 ,a是 1,2,3,4(7) push()和pop() :允許將數(shù)組當做棧使用,改變數(shù)組。Push()方法在數(shù)組的尾部添加一個或多個元素,并返回長度。Pop 類似,返回刪除的值。如:var stack = ;stack.push(1,2)stack.pop()/ stack: 1,2/stack: 1返回返回 22,注意這里是刪除的值( 8) unshift() 和 shift() :類似于 push()和
36、 pop(),不過他們在數(shù)組頭部操作。var a = 2;a.unshift(1)a.shift();a.unshift(3,4,5);/ a: 1,2返回/ a: 2返回 1/a: 3,4,5,22,即新數(shù)組的長度注意是一次性插入返回3( 9) toString() 和 toLocaleString(): 針對數(shù)組將每個元素轉化為字符串,用逗號分隔。如:1,2,3.toString()/“1,2,3”9.es5 中數(shù)組方法大多數(shù)方法的第一個參數(shù)接收一個函數(shù),并且對數(shù)組中的每個元素(或一些)調用該函數(shù)。大多數(shù)情況下,調用提供的函數(shù)使用三個函數(shù):數(shù)組元素、元素索引和數(shù)組本身。通常只需要第一個參數(shù)
37、,可忽略后面兩個。大多數(shù)es5 數(shù)組方法的第一個參數(shù)是一個函數(shù),第二個是可選的。如果有第二個參數(shù),則調用的函數(shù)被看做是第二參數(shù)的方法。 Es5 方法都不會改變他們調用的原始數(shù)組。傳遞給這些方法的函數(shù)可以改變。(1) forEach() :從頭至尾遍歷數(shù)組,為每個元素調用指定的函數(shù)。如:var data = 1,2,3,4,5;data.forEach(function(v, i, a)ai = v+1; );(2)map() :將調用的數(shù)組的每個元素傳遞給指定的函數(shù),數(shù)組,它包含函數(shù)的返回值。如:var a = 1,2,3;并返回一個新數(shù)組不改變調用的b.map(function(x)retu
38、rn x*x;)/b 是 1,4,9,a不變( 3) filter ():返回的數(shù)組元素是調用的數(shù)組的一個子集。傳遞的函數(shù)是用來邏輯判斷的:給函數(shù)返回 true 或 false。如:var data = 1,2,3,4,5;data.filter(function(x)return x<3);/ 1,2( 4)every()和 some():是數(shù)組的邏輯判定,它們對數(shù)組元素應用指定的函數(shù)進行判定,返回 true 或 false。如 :var data = 1,2,3,4,5;a.every(function(x) return x<10;)/truea.some(inNaN)/fa
39、lse(5) reduce()和 reduceRight ():使用指定的函數(shù)將數(shù)組元素進行組合,生成單個值。如:var a = 1,2,3,4,5var sum = a.reduce(function(x,y) return x+y, 0);/ 數(shù)組求和,第二參數(shù)是初始值。可選。reduceRight ()工作原理與reduce 一樣,不同的是它按照數(shù)組索引從高到低。注意:它們兩者都能接收一個可選的參數(shù),它指定了化簡函數(shù)調用時的this 關鍵子上的值。( 6) indexOf ()和 lastIndexOf ():搜索整個數(shù)組中具有給定值的元素,返回找到的第一元素的索引,沒有找到返回 -1.
40、10.數(shù)組類型:Array.isArray()可判斷是否是數(shù)組(es5)11.類數(shù)組對象: js 數(shù)組方法是特意定義為通用的,因為它們不僅應用在真正的屬豬而且在類數(shù)組對象上也能工作。Es5 中,所有數(shù)組但方法都是通用的。可間接使用Function.call方法調用:var a = “0”:”a”,”1”:”b”,”2”:”c”,length:3;/類數(shù)組對象Atotype.join.call(a, ”+”)/“a+b+c”(12)作為數(shù)組的字符串:es5 中,字符串的行為類似于只讀的數(shù)組。var s = test;s.charAt(0)/ 返回t第七章函數(shù)1 函數(shù)定義:名稱標識符:在函數(shù)聲明語句中必須,在函數(shù)定義表達式中可選,如果存在,該名字只存在于函數(shù)體中,并指代該函數(shù)對象本身,它將成為函數(shù)內部的一個局部變量。函數(shù)聲明會被提前,函數(shù)定義表達式不會,即在定義之前無法調用它。嵌套函數(shù):可以訪問嵌套它們的函數(shù)的參數(shù)和變量。注:函數(shù)聲明不能出現(xiàn)在循環(huán),條件判斷或者try/catch/finally以及 with 語句中。2.函數(shù)調用( 1)函數(shù)調用: var total = diatance(0,0,1,2)+distance(2,1,3,5);注: es3 和 es5 非嚴格模式下,調用上下文是全局對象。在嚴格模式下調用上下文則是 undefined 。(2
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 黃州教師招聘面試真題及答案
- 新能源汽車的發(fā)展模式對比研究試題及答案
- 新能源汽車的智能制造及其市場前景分析試題及答案
- 數(shù)字化營銷賦能食品飲料行業(yè)2025年電商運營增長模式報告
- 綜合管理考試題及答案
- 精準商務英語考試試題及答案
- 短視頻平臺社會責任履行現(xiàn)狀與2025年展望報告
- 文化產業(yè)園產業(yè)集聚與服務體系下的文化產業(yè)園區(qū)產業(yè)鏈協(xié)同效應報告
- 共享智能健身設備在健身房會員服務中的價值與作用報告
- 線上線下融合在農業(yè)電商中的實踐試題及答案
- 2025年中國陳皮市場調查研究報告
- 2024年農藝師考試考試形式試題及答案
- 老年綜合評估技術應用中國專家共識解讀
- 手術中大出血搶救流程
- 初中語文第23課《“蛟龍”探海》課件-2024-2025學年統(tǒng)編版語文七年級下冊
- 電工技術基礎 教案全套 歐小東 第1-10章 直流電路的基礎知識-過渡過程
- 汽車銷售禮儀與溝通技巧考核試卷
- 光伏電站面試題庫及答案
- 遺體轉運協(xié)議書范本
- 挖礦委托協(xié)議書范本
- 2025年標準租房合同范本
評論
0/150
提交評論