在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ 函數(shù)重載是什么樣子的?

函數(shù)重載是什么樣子的?

js中不是不能重載嗎?

function rec(num){
    return num+1;
}

function rec(num){
    return num+2;
}

rec(2)  // 4

那么為什么?

function rec(num){
    return  num+1;
}

rec(1)    // 2
rec(2)    // 3

不是調(diào)用相同的函數(shù)名的函數(shù),后者會覆蓋前者嗎?為什么第二種能順序返回

回答
編輯回答
北城荒

你這是分開在開發(fā)工具的console里運行的吧,一起寫好一同運行

2017年2月17日 17:55
編輯回答
萌小萌

函數(shù)在js中是引用數(shù)據(jù)類型,引用數(shù)據(jù)類型是存儲在堆當(dāng)中的,它的地址指針是存儲在棧當(dāng)中的,所以會覆蓋掉前面的函數(shù)。

2017年5月26日 16:40
編輯回答
冷咖啡

因為你沒理解什么叫函數(shù)重載。

函數(shù)重載--wiki
函數(shù)重載--百度

2018年4月28日 22:14
編輯回答
雨萌萌

樓主先理解函數(shù)重載重寫 即使是java里 應(yīng)該也是有區(qū)別這兩個概念的

java中
重載: 函數(shù)名一樣 參數(shù)不一樣
重寫: 函數(shù)名一樣 參數(shù)一樣

因為js的函數(shù)參數(shù)都是不固定的 所以js里函數(shù)沒有重載 只要是函數(shù)名一樣 后定義的的函數(shù)會覆蓋之前的函數(shù)

而且你可以吧函數(shù)認(rèn)為是變量

let someFunc;

someFunc = function () {  /** TODO **/}
someFunc(); // 無參數(shù)執(zhí)行函數(shù)
someFunc(1, 2, 3); // 傳入?yún)?shù)并執(zhí)行

someFunc = function () { /** TODO2 **/ }
someFunc();  // 這個執(zhí)行的當(dāng)然是后面那個TODO2了啊  可以認(rèn)為是重寫了這個函數(shù)
2018年5月16日 12:24
編輯回答
礙你眼
//通過參數(shù)個數(shù)的不同實現(xiàn)重載
function addMethod(obj, name, fn) {
    var ofn = obj[name];
    obj[name] = function() {
        if(fn.length === arguments.length) {
            return fn.apply(this, arguments);
        } else if(typeof ofn === 'function') {
            return ofn.apply(this, arguments);
        }
    };
}
var app = {};
addMethod(app, 'test', function(){
    console.log("未傳參數(shù)");
});
addMethod(app, 'test', function(a){
    return a;
});
addMethod(app, 'test', function(a, b){
    return a + b;
});

app.test() // 未傳參數(shù)
app.test(123) // 123
app.test(12,23) // 35

代碼摘至-《JavaScript Ninja》-

2018年5月21日 04:02