Javascript中的arguments與重載介紹
因為語言上的設(shè)計錯誤,arguments可以被當成一個數(shù)組。
function zero () {
console.log(arguments[0]);
}
也會有
function zero () {
for(var i=0;i<arguments.length;i++){
console.log(arguments[i]);
}
}
它利用了Javascript的一個事實,即Javasc
而這里的arguments變量給實參提供了一個類似數(shù)組的接口。因為這里的arguments的可變參數(shù),我們可以利用這個有意思的東西來做一些有意思的事,比如重載。
Javscript 重載
stackvoerflow上有一個關(guān)于重載的問題,于是有了第一個答案
if (typeof friend === "undefined") {
} else {
}
還有一個答案則是
switch (arguments.length) {
case 0:
//Probably error
break;
case 1:
//Do something
break;
case 2:
default: //Fall through to handle case of more parameters
//Do something else
break;
}
只是這種方式真的不好看,難道我們的函數(shù)最后要變成這樣子的?
function zero1 (){
console.log('arguments 1')
};
function zero2 (){
console.log('arguments 2')
};
function zero () {
if(arguments.length == 1){
zero1();
} else{
zero2();
}
}
真的一點都不好看,即使我們換個switch..case,也不好看啊。
Javascript arguments不是一個數(shù)組
arguments不是向我們看到的那樣一直是一個數(shù)組,有時候可能不是。
function hello(){
console.log(typeof arguments);
}
這里arguments的類型是一個對象,雖然數(shù)組的類型也是一個對象,雖然我們可以將之轉(zhuǎn)換為一個數(shù)組
var args = Array.prototype.slice.call(arguments);
但是這也表明了這不是一個數(shù)組,它擁有的只有Array的唯一一個屬性,即length。除此還有
arguments.callee
Reference to the currently executing function.
arguments.caller
Reference to the function that invoked the currently executing function.
arguments.length
Reference to the number of arguments passed to the function.
相關(guān)文章
如何在CocosCreator中使用http和WebSocket
這篇文章主要介紹了在Cocos Creator中使用的Http和WebSocket,對websocket感興趣的同學,一定要看下2021-04-04Some tips of wmi scripting in jscript (1)
Some tips of wmi scripting in jscript (1)...2007-04-04JavaScript 處理Iframe自適應(yīng)高度(同或不同域名下)
Iframe自適應(yīng)高度一直都備受關(guān)注,接下來為大家介紹下同域名下Iframe自適應(yīng)高度的處理以及跨域時Iframe高度自適應(yīng),感興趣的朋友可以參考下哈2013-03-03