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