day0319

day0319

参数

形参和实参

//a,b形参
//执行fn1(3,4)  3,4是实参
function fn1(a,b){
   

}

fn1(3,4);

注意传入参数为普通类型与引用类型的区别

普通类型:给个相同值
引用类型:指向同一地址

如果实参数量小于形参数量,那么最后没有赋值的形参则是undefined
如果形参属性小于实参数量,那么多出阿来的实参无法从形参上获取(对应不上)

function fn1(a,b,c,d){
   

}
fn1(3,4,5);


function fn1(a, b, c, d) {
   

}
fn1(3, 4, 5, 6, 7);

在这里插入图片描述
此处未给函数的形参b传参,b为undefined,但是函数可执行不报错,数值+undefined为NaN

function sum(a,b){
       
console.log(res);
console.log(a);
console.log(b);
console.log(1+undefined);
var res = a + b;    
console.log(String(res));
console.dir(res);
return true;    
return res; 
} 

var res = sum(1); 

alert(res)

在这里插入图片描述
形参初始值,当实参没有传入对应的值,默认是形参初始值(实参是undefined),如果传入则是传入值

必要的形参定义在函数的前面,非必要的形参定义在后面,大多数的初始值都是针对非必要的形参

形参中ES5是不能设置形参初始值,ES6中形参可以设置初始值

严格模式 之后再说

以为js是弱引用类型,所以参数是不需要设置类型的

如果封装的函数被比如人使用时,别人传入的参数不一定类型相同,会造成函数不可预期的错误

ES6中…arg

ES6中调用所有参数
传入不定数量的参数时会被放在arg这个数组

function fn1(...arg){
   
console.log(arg);
}

fn1(1,2,3,4,5)

在这里插入图片描述
…arg必须放在形参的最后

function fn1(fn,...arg){
   
    console.log(arg);
}
ES5中 arguments

arguments 是一个类数组对象。代表传给一个function的参数列表

ES5 函数内部arguments 参数列表 实参列表

arguments 对象只能在函数内使用

function fn1(){
   
    var s=0;
    for(var i=0;i<arguments.length;i++){
   
        s+=arguments[i];
    }
    return s;
}

var sum=fn1(1,2,3,4,5,6);
console.log(sum);

在这里插入图片描述

arguments.length 在函数内是当前函数传入的 实参数量
fn1.length通过获取函数的length可以获取到函数的 形参数量

function fn1(a,b,c,d){
   
    console.log(arguments.length);
    console.log(fn1.length);
}
fn1(1,2,3,4,5,6,7);

在这里插入图片描述

arguments的属性

arguments.length 传递给函数的参数数量
arguments.callee 指向参数所属的当前执行的函数 英文含义 被召者
arguments.callee.caller 当前函数的环境外(上下文)函数,不是函数显示null 召唤者

function fn1(fn){
   
console.log(arguments.callee);//就是当前函数
console.log(arguments.callee.name);//就是当前的名字
console.log(arguments.callee.caller);//调用当前函数的环境外(上下文)函数,不是函数显示null
}
function fn2(){
   
    fn1();
}

fn1();
fn2();

在这里插入图片描述
callee 是 arguments 对象的一个属性。它可以用于引用该函数的函数体内当前正在执行的函数。这在函数的名称是未知时很有用,例如在没有名称的函数表达式 (也称为“匿名函数”)内。

使用arguments.callee实现匿名递归

function fn1(fn){
   
    fn(0);
}

fn1(function(a){
   
    a++;
    console.log(a);
    if(a>3) return;
    arguments.callee(a);
})

在这里插入图片描述

return

遇到return,跳出函数,不再执行return后面的语句

function fn1(){
   
    var a=1;
    console.log(a+5);
    return;
    console.log(a);
}

fn1();

在这里插入图片描述
使用return返回一个运行结果,或者一个值,仅能返回一个值
返回的结果可以在函数执行时赋值给变量

function fn1(){
   
    var a=1;
    var b=2;
    return a+b;
}

var s=fn1();
console.log(s);

在这里插入图片描述

用return进行限制

限定函数传入参数类型或者其他的范围,来判断是否继续执行该函数还是跳出

function fn1(a){
   
    if(!a) return;
    var s=a+5;
    console.log(s);
}

fn1(5);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值