js 重载i

时间:2022-02-16 11:31:28
 <!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
<script type="text/javascript">
/* function sum(num1 , num2){
return num1 + num2 ;
} function sum(num1){
return num1 + 100;
}
alert(sum(19)); //119
alert(sum(19,10)); //119
*/
/**
* 以下两个sum的写法与上面的两个function是一样的,只是写法不同而已
*/
var sum = function(num1 , num2){
return num1 + num2 ;//29
} var sum = function(num1){
return num1 + 10; //29
} /**
* 此时sum所指向的控件已经从有两个参数的函数变化到只有sum1的函数中
* 在调用的时候就只会调用*sum1 的函数
* 特别指出:函数的参数和调用没有关系,如果函数只有一个参数,但是却传入了两个参数。仅仅只会匹配一个
* 所以在js中函数是不存在重载
*/
alert(sum(19));
alert(sum(19,10)); //函数有如下一种定义方式
/**
* js中 函数就是对象,不存在重载,只是存在覆盖,后面定义的会覆盖前面定义的。
*
* 如下定义方式等于定义了一个
* function fn(num1,num2){
* alert(num1+num2);
* }
* 所有通过以下的例子,充分的说明函数就是一个对象
* 在js中,函数就是一个对象,函数的名称可以变,他是一个对象,当函数是一个对象给我们带来了革命性的变化就是,
* 我们可以返回一个函数,我们可以把函数当作参数传进去,就带来了很多灵活性
*/
var fn = new Function("num1" , "num2" , "alert(num1 + num2);");
fn(12,22); //34 </script> </head>
<body> </body>
</html>
 <!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
<script type="text/javascript">
function fun1(arm1) {
alert(arm1);
}
function fun2(arm1, arm2) {
alert(arm1 + "_" + arm2);
}
function fun(arm1, arm2) {
if (arguments.length == 1) {
fun1("我一个人啦");
} else {
fun2("我一个人啦",",终于来个伴了");
}
} fun(1); //我一个人啦
fun(1,2); //我一个人啦_,终于来个伴了 </script> </head>
<body> </body>
</html>