java里面是存在重載的,那么js中呢?這個問題面試的時候會經常遇到。但是可以肯定的說,js中是不存在重載的,但是我們可以通過其他的方式來模擬重載,我們可以通過argument方法來實現。
argument是系統自帶的一個方法,它是一個數組,並且用來存儲函數傳遞的參數值。例如,我們定義一個function函數如下,並采用三種參數調用。
function add1(a,b){ alert(arguments.length); //把傳遞的參數保存到了argument的數組里面 return a+b; } alert(add1(1,2)); alert(add1(1,2,3)); alert(add1(1,2,3,4));
alert(arguments.length)的結果分別是2,3,4。
因此我們可以通過argument變量來模擬函數的重載。具體代碼如下:
<html> <head> <title>HTML示例</title> <style type="text/css"> </style> </head> <body> <script type="text/javascript"> function add1(a,b){ alert(arguments.length); //把傳遞的參數保存到了argument的數組里面 switch(arguments.length) { case 2: return arguments[0]+arguments[1];break; case 3: return arguments[0]+arguments[1]+arguments[2];break; case 4: return arguments[0]+arguments[1]+arguments[2]+arguments[3];break; default: return 0; } } alert(add1(1,2)); alert(add1(1,2,3)); alert(add1(1,2,3,4)); </script> </body> </html>