js權威指南讀書筆記_第1頁
js權威指南讀書筆記_第2頁
js權威指南讀書筆記_第3頁
js權威指南讀書筆記_第4頁
免費預覽已結束,剩余12頁可下載查看

下載本文檔

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

文檔簡介

1、第一章詞法結構Js 是用 Unicode 字符集編寫的;js 區分大小寫,而html 不區分;直接量;標志符合保留字;分號可選,注意良好的編程習慣。第二章類型、值和變量1.數字Js 不區分整數值和浮點數值,所有值都用浮點數值表示。整型直接量有十六進制( ox 或 Ox 前綴),八進制(0 開始,可能不支持) ,還有十進制。Infinity:無窮大-Infinity:負無窮大NaN != NaN (返回true)0 = -0Js 采用一種二進制表示法,不能精確到類似數,如 10 分而非 0.1 元0.1 這樣的數字,應避免小數,使用大整2.文本字符串直接量轉義字符:.字符串:js 中字符串是固定

2、不變的,使用方法后都返回新字符串,字符串本身不改變。3.布爾值任意字符串都可以轉換為布爾值,如下列都轉換為falseundefinednull0-0NaN“”布爾值包含toString() 方法4.null 和 undefinedtypeof(null)/ 返回 object, 可以認為 null 是一個特殊的對象值,即“非對象”。typeof(undefined)/返回 undefine, 表明這個值是這個類型的唯一成員。兩者都不包含任何屬性和方法。5.全局對象比如 Math 和 JSON,全局對象的屬性是全局定義的符號,js 程序可以直接使用。在代碼最頂級,this 可以直接引用全局對象。

3、如果代碼聲明了一個全局變量,這個全局變量就是全局對象的一個屬性。6.包裝對象Js 對象是屬性或已命名值得集合,通過(.)引用屬性值,屬性值是函數時,稱其為方法。存取字符串、 數字、 布爾值的屬性時創建的臨時對象,對象,即它們三者并不是對象,但表現出有屬性。它只是偶爾用來區分原始類型和可通過 String (), Number ()或 Boollen ()顯式創建包裝對象:var s = new String();= 視原始值和包裝對象相等,= 不等。7.原始值( undefined、 null 、布爾值、數字和字符串)是不可改變的,修改字符串實際上返回了一個新的字符串, 原字符串并不改變。 原

4、始值的比較是值的比較, 只有它們的值相等時才相等。對象是可變的,值可以修改,但對象的比較并不是值的比較,而是引用的比較,當且它們引用同一個基對象才相等。8.類型轉換( 1)= 符號會偏向把兩邊數據類型轉換為數字進行比較。且其從不試圖將其操作數轉換為布爾值。( 2)顯式類型轉換:Number()/等價于 x+ parseInt()/只解析整數,可接受第二個參數:parseInt(“11”,2) 結果為 3( 1*2+1 )parseFloat()/可解析整數和浮點數。Boolean()/ 等價于 +x,一元運算符String()/等價于 !x,一元“!”運算符對操作數轉換為布爾值并取反。Obje

5、ct()方法(都是轉換為字符串) :toString()/轉換為字符串, ()中可以接受轉換基數toFixed()/根據小數點后的指定位數將數字轉換為字符串,不使用指數記數。toExponential()/ 參數指定小數點后面位數,且小數點前只有一位,可使用指數記數。toPrecision()/參數指定有效位數,有效數字小于數字整數部分數用指數形式。(3)對象轉換為原始值toString()valueOf()/ 返回對象本身9.變量聲明Js 是動態語言類型,聲明變量時不用指明類型。10.變量作用域在函數體內,局部變量的優先級高于同名的全局變量。聲明局部變量時必須使用 var 語句,不然會生成全

6、局變量。Js 中沒有塊級作用域,取而代之的是函數作用域:變量在聲明它們的函數體以及這個函數體嵌套的任意函數體內都是有定義的。即函數內的變量聲明“提前” 至函數體頂部, 同時變量初始化留在原來的位置。Js 全局變量是全局變量的屬性,用var 聲明的變量是不可配置的,無法用delete 刪除未聲明的變量可配置。作用域鏈第三章表達式和運算符1.原始表達式如: 1.123“hello ” /pattern/2.對象和數組的初始化表達式如: var x = ;var y = ;3.函數定義表達式var squre = function(x) return x*x;4.屬性訪問表達式兩種訪問方式:var

7、o = x:1,y:z:3;o.x;o“x”5.調用表達式是一種調用(或者執行)函數或方法的語法表示。如: f(0)Math.max(x,y,z)a.sort()6.對象創建表達式創建一個對象并調用一個函數(構造函數)初始化新對象的屬性如: new object()new point(2,3)new object7.運算符( 1)左值:表達式只能出現在賦值運算符的左側。 Js 中變量,對象屬性和數組元素都是左值, ECMAScript 規范允許內置函數返回一個左值,但自定義的函數不能返回左值。( 2)“+”運算符:二元加法運算符,優先考慮為字符串,兩側都不是字符串時理解為數字。對于不是原始值的

8、操作數會先做類型轉換。對象到原始值的轉換規則:日期對象通過toString()方法執行轉換, 其他對象則通過valueOF()方法執行轉換(如果能返回一個原始值) 。但大多數對象都不具備可用的 valueOf()方法,則會通過 toString ()方法來轉換。(3)一元運算符“+”,“ -”:根據需要把操作數轉換為數字“+ ”:在操作數之前(前增量) ,對操作數進行增量計算,并返回計算后的值。在操作數之后(后增量),對操作時進行增量計算,但返回未做增量計算的值。如: var i = 1, j = +i;/i 和 j 的值都是2var I = I, j = i+/i=2 , j=1“- ”:類

9、似上述。8.關系表達式( 1)相等和不等。“=”:得到或賦值。“= ”:相等。 / !=“= ”:嚴格相等。/!=注意: NaN 和其他任何值都不相等。(2)比較運算符操作數只有是數字和字符串才能真正執行比較操作,不是會進行類型轉換。相比“ +”運算符,字符運算符更偏愛數字,只有兩個操作數都是字符串時才會進行字符串的比較。(3) in 運算符希望左操作數是一個字符串或者可以轉換為字符串,右操作數是一個對象。如果右側的對象擁有一個名為左操作數值的屬性名,則返回true。注意:var point = x:1, y:2”toString ”in point/truetoString in point

10、/ false( 4) instanceof 運算符希望左操作數是一個對象,右操作數標識對象的類。如果左側對象是右側類的實例,則返回 true,否則 false。Js 對象的類是通過初始化它們的構造函數來定義的, 則右操作數是一個函數。如:var d = new Date(); d instrnceof Date; d instrnceof Object; d instrnceof Number;/true/true/false原型鏈9.邏輯表達式假值: falsenullundefined0-0NaN則其他的值包括對象都是真值。“&& :左操作數為真值時則返回右操作數的結果。

11、左操作數為假值時則返回左操作數的的結果,即不計算右操作數的值。“|”:先計算左操作數的值,結果為真值則返回這個結果。否則返回右操作數結果。“!”:一元運算符,將操作數的布爾值求反。10.賦值表達式“=”Datai+ *=2;Datai+ =Datai+ * 2;/結果不一樣11.eval()解釋運行由js 源代碼組成的字符串,并產生一個值。eval()是一個函數,但被當成運算符對待。只傳入一個參數,如果參數不是字符串則直接返回這個值。是字符串則會當成js 代碼進行編譯,執行后將返回最后一個表達式或語句的值。eval()使用了調用它的變量作用域環境。如:假如已定義一個局部變量xeval(“x”)

12、/ 返回局部變量的值全局 eval()通過別名調用時,eval()會將其字符串當成頂級的全局代碼來執行,即可能會定義新的全局變量和全局函數,或給全局函數賦值。Ie9 之前通過execscript()的全局函數來完成全局 eval()的功能。注:嚴格模式下eval 不能在局部作用域定義新的變量或函數,可查詢或更改。11.其他運算符“?:”typeof : 一元運算符,返回值為表示操作數類型的一個字符串。注: typeof( null )返回 object函數返回 function ,而不是 object。 Es3 中對所有內置可執行對象,一律返回 function , es5 中擴充到所有可執行

13、對象,包括內置對象和宿主對象。Delete:一元操作符,刪除對象屬性或者數組元素,刪除成功返回true,否則返回 false。delete 希望操作數是一個左值,不是左值則不做任何操作返回true,一些內置核心和客戶端屬性不能刪除, var 語句聲明的變量不能刪除,通過function 語句定義的函數和函數參數也不能刪除。不能刪除數組的長度,只能刪除其屬性。Void:一元運算符,操作數會照常計算,但會忽略結算結果并返回undefined。“,”:二元運算符,先計算左操作數,再計算右操作數。第四章語句表達式計算出一個值,但語句用來執行使某件事發生。1.語句塊:多條語句連接在一起,花括號括起。Js

14、 中沒有塊級作用域,則語句塊中聲明的變量并不是語句塊私有的。空語句:;如:for(i=0;i<a.length; ai+=0);2.聲明語句: varfunction f() 函數聲明語句可嵌套在其他函數體內,但此時只能出現在所嵌套函數的頂部。3.條件語句ifelse ifswitch :“相同” 是按照“ = ”運算符進行比較的。 return 和 break 都可以用于終止語句。Es 標準允許每個 case關鍵字跟隨任意的表達式, 用的表較多的是數字和字符串。可以放置在 switch 語句內的任何地方。swichdefault4.循環Whilefor/indo/whilefor(其中

15、三個表達式任一個都可忽略,但兩個分號必不可少。: for(variable in object)strtement)variable必須是一個適用于賦值表達式左值的值,通常是一個變量名。Object是一個表達式,結算結果是一個對象。如: for(var p in o)console.log(op);for/in循環并不會遍歷對象的所有屬性,只有“可枚舉”的屬性才會遍歷到。5.跳轉標簽語句:即給語句加上標簽,如:mainloop: while()注意: break 和 continue 是 js 中唯一可以使用語句標簽的語句。標簽的命名空間和變量或函數的命名空間不同,即它們名字可以相同。Brea

16、k :單獨使用的作用是立即退出最內層的循環或 switch 語句。允許在后面跟隨一個標簽語句, 作用是程序將跳轉到這個標簽所標識的語句塊的結束, 或者直接終止這個閉合語句塊的執行。需要注意的是 break 的控制權無法越過函數的邊界,比如,對一條帶標簽的函數定義語句來說,不能從函數內部通過這個標簽來跳轉到函數外部。Continue :轉到下一次循環,可帶有標簽。Return:沒有指定返回值都返回undefined 。throw : throw expression顯式拋出異常。expression 可以是任意類型,通常采用error 類型和其子類型,一個 error 對象有一個 name 屬性

17、表示錯誤類型, message屬性用于存放傳遞給構造函數的字符串。拋出異常時停止當前執行的邏輯,調至就近的異常處理程序( catch)。try/carth/finally: try 從句定義了需要處理的異常所在的代碼塊。catch 跟在其后,處理異常。 Finally 放置清理代碼,不管try 中是否有異常,finally 塊中的邏輯都會執行。trycatch(e)finallycatch 圓括號內是一個標志符,當捕獲到一個異常時,相關值賦值給這個參數,這個參數具有塊級作用域,只在catch 中定義。6.其他語句類型with :用于臨時作用域鏈with (object) statement/

18、這條語句將object 添加到作用域鏈的頭部,然后執行statement,最后把作用域鏈恢復到原始狀態。如: with(document.forms0)name.value = “”;address.value = “”;email.value = “”;/ document.forms0.address.value注意: with 語句提供了一種讀取屬性的快捷方式,但不能創建屬性。debugger:當調試程序可用并運行時,js 解釋器將會以調試模式運行。實際上這條語句用來產生一個斷點。如:function(o)if(o =undefined) debugger;/ 用于臨時測試“use st

19、rict”:說明后續的代碼將會解析為嚴格代碼。var hasStrictMode = (function()“use strict”; return this=undefined();/ 判斷是否支持嚴格模式。即嚴格模式下調用的函數中的一個this值是undefined ,非嚴格模式中,總是全局對象。第五章對象對象是一種復合值,可看做是屬性的無序集合。Js 對象還可以從一個稱為原型的對象繼承屬性。對象的方法通常是屬性的繼承。屬性特征( property attribute ):可寫、可枚舉(是否可以通過for、in 循環返回該屬性) 、可配置(可以刪除或修改該屬性)。對象特征:對象的原型( p

20、rototype)指向另外一個對象,本對象的屬性繼承自它的原型對象。對象的類( class)是一個標識對象類型的字符串。對象的擴展標記指明了是否可以向該對象添加新屬性。內置對象宿主對象自定義對象自由屬性繼承屬性1.創建對象( 1)對象直接量:var point = x:2,y:3;( 2)通過 new 創建對象:創建并初始化一個新對象,如:var o = new object();( 3)原型:每一個對象(null 除外)都從原型繼承一個屬性。所有對象直接量都具有同一個原型對象,通過object,prototype 獲得引用。new Date() 創建的對象的原型就是totyp

21、totypenew object() :totype沒有原型的對象不多,如totype , ,它不繼承任何屬性( 4) object.create(),如var o = object.create(x:1,y:2);/o 繼承了屬性.x 和y,使用第一個參數作為它的原型(可以是步的描述。null ),第二個參數用于對對象的屬性進行進一例:通過原型繼承創建一個新對象,即函數返回的新對象繼承了參數對象的屬性: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;/ 創建一個edition 屬性( 1) object “property ” / 關聯數組, js 對象都是關聯數組。“ “. 后的是一個標識符,不可以修改, 而

23、 中的屬性名可以修改,因為它們是數據類型。( 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,它只斷開屬性和宿主對象的聯系,而不會去操作屬性中的屬性。只能刪除自有屬性,不能刪除繼承屬性(要在定義這個屬性的原型上刪除,影響到繼承這個原型的對象)。delete 不能刪除那些可配置性為false 的屬性。delete x/在嚴格模式下報錯,非嚴格模式不報錯delete this.x;/正常會4.檢測屬性“ in”運算符:如果對象的自由屬性或繼承屬性中包含這個屬性返回不存在的屬性和存在但值為undefined 的屬性。true。 In可以區分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 循環:遍歷所有可枚舉的屬性,包括自有屬性和繼承屬性。Object.key() :是一個函數,返回一個數組,這個數組由對象中可枚舉的自有屬性組成(不包括屬性的值)。Object.getOwnPropertyNam

26、es(): 與上述類似,只是它返回對象的所有自由屬性的名稱,包括不可枚舉的屬性。6.屬性 getter 和 setter由 getter 和 setter 定義的屬性稱為“存儲器屬性” ,不同于數據屬性,數據屬性只是一個簡單的值。定義存儲器屬性如下:var o = data_prop: value; /普通數據屬性get accessor_prop() /*這里是函數體*/set accessor_prop(value) /*這里是函數體*/ / 這里函數沒有用 function 關鍵字,而是 get 和 set和數據屬性一樣。存儲性屬性是可以繼承的7.屬性的特性除了名字和值之外,屬性還包含一

27、些標識它們可寫、可枚舉和可配置的特性。在es3中無法設置這些特性,所有通過es3 的程序創建的屬性都是可寫、可枚舉和可配置的,且無法對這些特性做修改。可認為一個屬性包含一個名字和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 函數(3)可擴展性:用于表示是否可以給對象添加新屬性。Object.esExtensible(): 判斷是否可擴展Object,preventExtensions() :將對象轉換為不可以擴展的,轉

30、換后無法設為可擴展。 Object,seal() 和 Object.preventExtensions() 類似,除了能將對象設置為不可擴展的, 還可以將對象的所有自有屬性都設置為不可配置的,即屬性不能刪除或配置。對于那些已經封閉(sealed)起來的對象是不能解封的。可以使用Object.isSealed()來檢測對象是否封閉。Object.freeze():將對象“凍結” ,將對象設為不可擴展,屬性設為不可配置,還可以將它自有的所有數據屬性設置為只讀的。Onject.isfrozen() 檢測。9.序列化對象:是指將對象的狀態轉化為字符串,也可將字符串還還原為對象。和 JSON.parse

31、()用來序列化和還原 js 對象。 JSON.stringify()Es5中JSON( javescript object Notion ): javascript 對象表示法。10.對象方法toString ()toLocaleString ():返回表示這個對象的本地字符串。toJSON()ValueOf第六章數組數組是值的有序集合1. 數組創建:如: var b = new Array(); var s = ;2.數組元素的讀和寫注:a-1.23 = true;/ 即屬性名是負整數,這里新建一個名為“-1.23”的屬性3.稀疏數組:包含0 開始的不連續索引的數組。如: a = new A

32、rray(5)/ 數組沒有元素,但是有值 undefineda1000 = 0 ;/ 測試結果同上a.length = 5 。 Firebug中測試注:當在數組直接量中省略值時不會創建稀疏數組。如:var a1 = ,;/有值 undefined舊版本中, 1,3 和 1,undefined,3 結果是一模一樣的4.數組長度: length 是數組的一個屬性。a = 1,2,3,4,5;a.length = 3;/ 現在 a 為 1,2,35.數組元素的刪除和添加添加: push刪除: delete 刪除數組元素后值變為 undefined ,變為了稀疏數組,但不修改數組的 length 屬性

33、,索引值也不變。6.數組遍歷for 循環for/inforEach7.多維數組: js 不支持真正的多維數組,但可以用數組的嵌套來近似。8.es3 中的數組方法( 1) join() :將數組中的所有元素都轉化為字符串并連接在一起,返回最后生成的字符串,默認使用逗號分隔。但不該變原數組。如:var a =1,2,3;a.join();/ ”1,2,3”a.join( “”)/ “123”( 2) reverse():將數組中元素順序顛倒,返回逆序的數組,原數組改變。( 3) sort() :將數組中的元素排序并返回排序后的數組,改變原數組。不帶參數時按字母表順序排序。傳入一個比較函數時,如下:

34、var a =1,10,3;a.sort( function(a,b) return a-b;)/ 根據數值順序返回,即 a 應該在前的話返回小于 0 的值,在后返回小于0 的值。(4) concat() :創建并返回一個新數組,不會修改調用的數組。如: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(): 指定數組的一個片段或子數組,不會修改調用的數組。var a = 1,2,3,4,5,6;a.slice(1,3);/ 返回2,3,4,

35、 根據索引值(6) splice() :在數組中插入或刪除元素的通用方法,改變調用的數組。如: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() :允許將數組當做棧使用,改變數組。Push()方法在數組的尾部添加一個或多個元素,并返回長度。Pop 類似,返回刪除的值。如:var stack = ;stack.push(1,2)stack.pop()/ stack: 1,2/stack: 1返回返回 22,注意這里是刪除的值( 8) unshift() 和 shift() :類似于 push()和

36、 pop(),不過他們在數組頭部操作。var a = 2;a.unshift(1)a.shift();a.unshift(3,4,5);/ a: 1,2返回/ a: 2返回 1/a: 3,4,5,22,即新數組的長度注意是一次性插入返回3( 9) toString() 和 toLocaleString(): 針對數組將每個元素轉化為字符串,用逗號分隔。如:1,2,3.toString()/“1,2,3”9.es5 中數組方法大多數方法的第一個參數接收一個函數,并且對數組中的每個元素(或一些)調用該函數。大多數情況下,調用提供的函數使用三個函數:數組元素、元素索引和數組本身。通常只需要第一個參數

37、,可忽略后面兩個。大多數es5 數組方法的第一個參數是一個函數,第二個是可選的。如果有第二個參數,則調用的函數被看做是第二參數的方法。 Es5 方法都不會改變他們調用的原始數組。傳遞給這些方法的函數可以改變。(1) forEach() :從頭至尾遍歷數組,為每個元素調用指定的函數。如:var data = 1,2,3,4,5;data.forEach(function(v, i, a)ai = v+1; );(2)map() :將調用的數組的每個元素傳遞給指定的函數,數組,它包含函數的返回值。如:var a = 1,2,3;并返回一個新數組不改變調用的b.map(function(x)retu

38、rn x*x;)/b 是 1,4,9,a不變( 3) filter ():返回的數組元素是調用的數組的一個子集。傳遞的函數是用來邏輯判斷的:給函數返回 true 或 false。如:var data = 1,2,3,4,5;data.filter(function(x)return x<3);/ 1,2( 4)every()和 some():是數組的邏輯判定,它們對數組元素應用指定的函數進行判定,返回 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 ():使用指定的函數將數組元素進行組合,生成單個值。如:var a = 1,2,3,4,5var sum = a.reduce(function(x,y) return x+y, 0);/ 數組求和,第二參數是初始值。可選。reduceRight ()工作原理與reduce 一樣,不同的是它按照數組索引從高到低。注意:它們兩者都能接收一個可選的參數,它指定了化簡函數調用時的this 關鍵子上的值。( 6) indexOf ()和 lastIndexOf ():搜索整個數組中具有給定值的元素,返回找到的第一元素的索引,沒有找到返回 -1.

40、10.數組類型:Array.isArray()可判斷是否是數組(es5)11.類數組對象: js 數組方法是特意定義為通用的,因為它們不僅應用在真正的屬豬而且在類數組對象上也能工作。Es5 中,所有數組但方法都是通用的。可間接使用Function.call方法調用:var a = “0”:”a”,”1”:”b”,”2”:”c”,length:3;/類數組對象Atotype.join.call(a, ”+”)/“a+b+c”(12)作為數組的字符串:es5 中,字符串的行為類似于只讀的數組。var s = test;s.charAt(0)/ 返回t第七章函數1 函數定義:名稱標識符:在函數聲明語句中必須,在函數定義表達式中可選,如果存在,該名字只存在于函數體中,并指代該函數對象本身,它將成為函數內部的一個局部變量。函數聲明會被提前,函數定義表達式不會,即在定義之前無法調用它。嵌套函數:可以訪問嵌套它們的函數的參數和變量。注:函數聲明不能出現在循環,條件判斷或者try/catch/finally以及 with 語句中。2.函數調用( 1)函數調用: 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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論