js arguments物件說明
在javascript函式體內,識別符號arguments具有特殊含義。它是呼叫物件的一個特殊屬性,用來引用Arguments物件。 Arugments物件就像陣列,注意這裡只是像並不是哈。
javascript函式體內,arguments像陣列(並不是真的陣列,是一個Arguments物件, 再次強調)一樣,有length屬性,可以代表傳給函式的引數的個數。
引用一個形式引數可以用引數名,也可以用arguments[]陣列形式,其中arguments[0]表示第一個引數。
所以,javascript中Arguments物件是函式的實際引數,下面,我們一起來進入這神奇的國度,一窺究竟。
arguments.length屬性:
js不會主動為你判斷你到底給函式傳了多少個引數,如果你多傳了,多餘的部分就沒有被使用,如果你少傳了,那麼沒傳的引數值就是undefined
所以我們可以藉助arguments的length屬性來檢測呼叫函式時是否使用了正確數目的實際引數,因為javascript是不會為你做這些 事的
{
//首先檢查傳遞的引數數量是否正確
if(arguments.length!=3)
{
thrownew Error("function f called with "+ arguments.length+"arguments ,but it not 3 arguments.");
}
//下面執行真正的函式
}
arguments還為我們提供了這樣一種可能,就是為一個函式傳任意數目的實際引數:
比如說,我想判斷你傳給我的一些數字的大小,取出最大的那個,對,沒錯,你傳多少引數都行,但是前提是你要傳數字,因為我在函式內部懶得判斷了。 呵。
{
//根據我上一篇日誌,這已經是JavaScript內最小的數字了
var m = Number.NEGATIVE_INFINITY;
for(var i =0; i < arguments.length; i++)
{
//只要有任何一個引數比m大,那麼m就變成了這個引數的值
if(arguments[i]> m)
m = arguments[i];
}
return m;
}
怎麼樣?這個方法很巧妙吧?呵呵。
說明一下arguments與真正傳的形式引數是一致的:
比如,你給函式傳了一個叫param的引數,並且只有這一個引數,那麼param與arguments[0]都是對這個引數值的引用,
改變其中一個值,即改變了二者所有的值
{
//比如我傳的param為simaopig,那麼alert就是simaopig,
//如果啥也沒傳就會alert undefined
alert(param);
//用arguments[0]改變了這個引數的值
arguments[0]='xiaoxiaozi';
//沒錯,這個值變成了xiaoxiaozi
alert(param);
}
arguments的callee屬性:
arguments的callee屬性是用來引用當前正在執行的函式,這對未命名的函式呼叫自身非常有好處。
現在用arguments的這個callee同樣可以簡單的實現
var result =function(x){
if(x<=1)return1;
return x*arguments.callee(x-1);
};
在最後提醒大家一點,既然這個arguments這麼厲害,那麼我們就不要為變數命名為arguments 了,事實上arguments是javascript的保留字之一。嗯。
相關文章
- js函式,arguments物件JS函式物件
- 證明arguments是個物件不是陣列物件陣列
- objc物件說明OBJ物件
- JavaScript arguments 物件JavaScript物件
- js-arguments 函式引數物件詳解JS函式物件
- JS的argumentsJS
- 深入學習js之——類陣列物件與arguments #11JS陣列物件
- JavaScript arguments物件詳解JavaScript物件
- cityAreaSelect.js使用說明JS
- JS 中的 this 和 argumentsJS
- 舉例說明js如何拖拽排序?JS排序
- 說說JS中的原型物件和原型鏈JS原型物件
- js中的arguments,caller,callee,applyJSAPP
- 說說你對arguments的理解,它是陣列嗎?陣列
- npm說明和node.js安裝NPMNode.js
- 舉例說明js滑鼠事件有哪些?JS事件
- JS object.innerHTML的相關說明JSObjectHTML
- JavaScript 深入之類陣列物件與 argumentsJavaScript陣列物件
- 舉例說明js如何實現繼承?JS繼承
- Yul語言及物件說明——Solidity中文文件(9)物件Solid
- imutable.js常用增刪改查操作說明JS
- 說明
- 你知道 JavaScript 中的 Arguments 物件都有哪些用途嗎?JavaScript物件
- js中的arguments是一個好東西JS
- 以太坊 web3.js 文件翻譯及說明WebJS
- 用愚公移山說明Javascript建立物件的各種姿勢JavaScript物件
- Function.caller, arguments.caller, arguments.callee, arguments.callee.calllerFunction
- 使用說明
- Hack 說明
- 專利說明書及其說明書附圖
- 舉例說明陣列和物件的迭代方法分別有哪些?陣列物件
- 舉例說明物件導向程式設計有什麼缺點?物件程式設計
- openssh版本更新與說明 openssl版本更新與說明
- JS物件JS物件
- SDWebImage中文說明Web
- git 操作說明Git
- MOBIM介面說明
- Oracle Latch 說明Oracle
- SpringBoot整合說明Spring Boot