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物件]JS入門之arguments物件JS物件
- js函式,arguments物件JS函式物件
- 證明arguments是個物件不是陣列物件陣列
- objc物件說明OBJ物件
- JavaScript arguments 物件JavaScript物件
- js-arguments 函式引數物件詳解JS函式物件
- JS的argumentsJS
- 深入學習js之——類陣列物件與arguments #11JS陣列物件
- JavaScript arguments物件詳解JavaScript物件
- JavaScript arguments 物件詳解JavaScript物件
- mysql支援原生json使用說明MySqlJSON
- arguments 物件的老歷史物件
- 說說JS中的原型物件和原型鏈JS原型物件
- 關於物件序列化json 說說物件JSON
- JS object.innerHTML的相關說明JSObjectHTML
- json-server 接入專案說明JSONServer
- npm說明和node.js安裝NPMNode.js
- 阿里巴巴fastjson @JSONField 註解說明阿里ASTJSON
- JS 中的 this 和 argumentsJS
- JS中關於argumentsJS
- casperjs中的open()和thenOpen()使用說明JS
- JavaScript之坑了我--JSON物件明析JavaScriptJSON物件
- Yul語言及物件說明——Solidity中文文件(9)物件Solid
- imutable.js常用增刪改查操作說明JS
- js 快捷鍵大全,並有簡單使用說明JS
- SYSAUX 說明UX
- JavaScript 深入之類陣列物件與 argumentsJavaScript陣列物件
- 用愚公移山說明Javascript建立物件的各種姿勢JavaScript物件
- ADO.NET三個核心物件的簡要說明物件
- 初探AngularJS6.x---目錄結構說明AngularJS
- Vuejs基本知識(三)【語法簡寫說明】VueJS
- 用Excel做資料說明――抽樣說明工具Excel
- WebApiClientCore使用說明WebAPIclient
- QLExpress使用說明Express
- postman 使用說明Postman
- SDWebImage中文說明Web
- MOBIM介面說明
- git 操作說明Git