摘要:是一個(gè)類數(shù)組對象,包含著傳入函數(shù)中的所有參數(shù)。雖然的主要用途是保存函數(shù)參數(shù),但是這個(gè)對象還有一個(gè)名叫的屬性,該屬性是一個(gè)指針,指明擁有這個(gè)對象的函數(shù)。
arguments
arguments是一個(gè)類數(shù)組對象,包含著傳入函數(shù)中的所有參數(shù)。雖然arguments的主要用途是保存函數(shù)參數(shù),但是這個(gè)對象還有一個(gè)名叫callee的屬性,該屬性是一個(gè)指針,指明擁有這個(gè)arguments對象的函數(shù)。
例子:
function factorial(num){ if(num<=1){ return 1 }else { return num * factorial(num-1) } }
上面的代碼實(shí)現(xiàn)了階乘函數(shù)的遞歸實(shí)現(xiàn),但是這個(gè)函數(shù)的執(zhí)行與函數(shù)名factorial緊緊耦合在了一起,如果出現(xiàn)下面這樣的情況,就會(huì)出問題:
var fn = factorial factorial = null fn(10) // error: factorial is not a function
為了解決這種問題,可以使用arguments的callee屬性:
function factorial(num){ if(num<=1){ return 1 }else { return num * arguments.callee(num-1) } }
通過使用arguments對象的callee屬性,無論引用函數(shù)使用的是什么名字,都可以保證正常完成遞歸調(diào)用。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/83343.html
摘要:在不設(shè)置全局標(biāo)志的情況下,在同一個(gè)字符創(chuàng)上多次調(diào)用將始終返回第一個(gè)匹配項(xiàng)的信息。 字面量定義正則表達(dá)式 ECMAScript通過RegExp類型來支持正則表達(dá)式 var expression = / pattern / flags:模式(pattern)部分可以是任何簡單或復(fù)雜的正則表達(dá)式,標(biāo)志(flag)部分用來標(biāo)明正則表達(dá)式的匹配模式 正則表達(dá)式的匹配模式支持下列3個(gè)標(biāo)志: ...
摘要:引用計(jì)數(shù)另一種不太常見的垃圾回收策略是引用計(jì)數(shù)。引用計(jì)數(shù)的含義是跟蹤記錄每個(gè)值被引用的次數(shù)。在采用引用計(jì)數(shù)的策略中,由于函數(shù)執(zhí)行之后,這兩個(gè)對象都離開了作用域,函數(shù)執(zhí)行完成之后,和還將會(huì)繼續(xù)存在,因?yàn)樗麄兊囊么螖?shù)永遠(yuǎn)不會(huì)是。 垃圾回收的必要性 由于字符串、對象和數(shù)組沒有固定大小,所以當(dāng)他們的大小已知時(shí),才能對他們進(jìn)行動(dòng)態(tài)的存儲(chǔ)分配。JavaScript程序每次創(chuàng)建字符串、數(shù)組或?qū)ο髸r(shí)...
摘要:首先來看一個(gè)例子我們知道基本數(shù)據(jù)類型有還有一種復(fù)雜數(shù)據(jù)類型基本類型不是對象從邏輯上講是不應(yīng)該有方法的其實(shí)為了讓我們能夠?qū)M(jìn)行相關(guān)操作后臺(tái)已經(jīng)自動(dòng)完成了一系列的處理當(dāng)?shù)诙写a訪問時(shí)訪問過程處于一種讀取模式也就是從內(nèi)存中讀取這個(gè)字符串的值而在 首先來看一個(gè)例子 var s1 = some text; var s2 = s1.substring(2); var s3 = new Strin...
摘要:方法將所有在過濾函數(shù)中返回的數(shù)組元素放進(jìn)一個(gè)新數(shù)組中并返回。方法從左到右為每個(gè)數(shù)組元素執(zhí)行一次回調(diào)函數(shù),并把上次回調(diào)函數(shù)的返回值放在一個(gè)暫存器中傳給下次回調(diào)函數(shù),并返回最后一次回調(diào)函數(shù)的返回值。 創(chuàng)建數(shù)組 var array = new Array(); var array = new Array(10); var array = new Array(red,blue,green);...
摘要:除語法不同外,兩者的區(qū)別在于解析器讀取的順序。解析器會(huì)事先讀取函數(shù)聲明,即使你把函數(shù)聲明放在代碼的末端也沒關(guān)系。修改對象將可能導(dǎo)致命名參數(shù)失去意義。其實(shí)除允許匿名函數(shù)遞歸調(diào)用自身外,并沒有什么太大用處。 javaScript因?yàn)槠湔Z法松散,導(dǎo)致函數(shù)(尤其是this)看似簡單,其實(shí)里面花頭很多。本篇介紹一下JavaScript函數(shù)及其調(diào)用方法。? 函數(shù)聲明和函數(shù)表達(dá)式? ar...
閱讀 1413·2023-04-26 03:04
閱讀 2368·2019-08-30 15:44
閱讀 3737·2019-08-30 14:15
閱讀 3542·2019-08-27 10:56
閱讀 2760·2019-08-26 13:53
閱讀 2627·2019-08-26 13:26
閱讀 3090·2019-08-26 12:11
閱讀 3618·2019-08-23 18:21