<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<script>
//函数的返回值,如果不写,默认返回undefined等价return;
function fun1 () {
console.log('1');
}
function fun2 () {
console.log('2');
return;
}
//函数没有像java的方法签名,所以不支持重载,其入参仅仅是一个参数的描述,真正的入参数量不受限制,放在arguments对象中
//arguments可以跟入参名混用
function fun3 (num1,num2) {
console.log(num1+arguments[1]);
}
//等价
function fun3_1 () {
console.log(arguments[0]+arguments[1]);
}
//可以实现任意参数的相加
function addAll(){
var num=0;
for(var i=0;i<arguments.length;i++){
num+=arguments[i];
}
console.log('addAll结果:'+num);
}
//相同的方法,后者覆盖前者,类似变量定义
function fun4 () {
console.log('fun4-1');
}
function fun4 () {
console.log('fun4-2');
}
//js的方法只存在值传递,如果入参没有被赋值,那么为undefined
function fun5 (num1,num2) {
console.log('fun5的第二个入参:'+num2);
}
//js的arguments的长度是由传入的参数的个数决定的,且arguments[i]的值永远跟对应的命名参数值一致
function fun6(num1){
arguments[0]=4;
arguments[1]=5;
console.log('fun6的第一个参数为:'+num1);//4
console.log('fun6的第二个参数arguments[1]为:'+arguments[1]);
//1,因为长度是由传入的参数的个数决定的
console.log('fun6的arguments长度为:'+arguments.length);
}
window.function () {
var a=fun1();
var b=fun2();
console.log(a);//默认返回undefined
console.log(b);//默认返回undefined
fun3(1,2);
fun3_1(1,2);
addAll(1);
addAll(1,2,3);
addAll(1,2,3,4);
fun4();
fun5(1);
fun6(1);
}
</script>
<body>
</body>
</html>