js基础2-函数

函数就是包裹在花括号中的代码块,前面使用了关键词 function。

一、定义函数

function myFunction(x){
    if(x>=0){
        return x;
    } else {
        return -x;
    }
}

上述myFunction()函数的定义如下:

1.function关键字指明这是一个函数;

2.myFunction是函数名;

3.x是参数;

4.花括号里面的代码是函数体,可以包括若干语句,甚至可以没有语句。

注意:

函数体的代码在执行的时候,一旦遇到return时就会执行完毕立即返回,其后的语句并不会执行。如果没有return语句,就会返回undefined。

由于javascript的函数也是一个对象,上述的函数也可这样定义 

var myFunction = function(x){
    if(x>=0){
        return x;
    } else {
        return -x;
    }
};

该函数没有函数名,所以属于一个匿名函数;但是该函数赋值给了变量myFunction,因此可以通过myFunction调用。

注意第二种方式按照完整语法需要在函数体末尾加一个;,表示赋值语句结束。

二、调用函数

myFunction(9);//返回9

由于javascript允许传入任意个参数而不影响调用,因此可以传入多个(更少)的参数都没问题。

myFunction(9,'balalal');//返回9

myFunction();//返回NaN

三、arguments

javascript还有一个免费赠送的关键字arguments,它只在函数的内部起作用,并且永远指向函数的调用者所传入的参数。arguments类似array,但是不是array。

使用场景1

function foo(x){
    console.log(x)//10
    for(var i=0;i<arguments.length;i++){
        console.log(arguments[i]);//10 20 30
    }
}
foo(10,20,30)

使用场景2

即使函数不定义任何参数,还是可以拿到参数的值:

function abs() {
    if (arguments.length === 0) {
        return 0;
    }
    var x = arguments[0];
    return x >= 0 ? x : -x;
}

abs(); // 0
abs(10); // 10
abs(-9); // 9

使用场景3

// foo(a[, b], c)
// 接收2~3个参数,b是可选参数,如果只传2个参数,b默认为null:
function(a,b,c){
    if(arguments.length===2){
        c = b
        b = null
    }

}

使用场景4

实现一个函数,该函数期望接受无限多个参数,整个函数返回所有参数相加之和,该函数有智能检测功能,如碰到任意一个参数为非Number类型时,返回'请输入number类型'。

function add(){
    var sum = 0
    for(var i=0;i<arguments.length;i++){
        if(typeofarguments[i] === 'Number'){
            sum += arguments[i]
        } else {
            return '请输入number类型';
        }
    }
    return sum;
}
console.log(add(1,2,3,5,6,10));

四、rest

ES6引入了rest参数

function foo(a,b,...rest){
    console.log('a = ' + a);
    console.log('b = ' + b);
    console.log(rest);
}
console.log(foo(1,2,3,4,5))
// 1
// 2
// [3,4,5]
foo(1);
// 结果:
// a = 1
// b = undefined
// Array []

注意:rest参数必须写在最后一个位置,前面用...标识,从运行结果可知,传入的参数先绑定ab,多余的参数以数组形式交给变量rest,rest是一个数组,如果没有给它传值,则是一个空数组。

使用练习

//使用rest计算参数和
function foo(...rest){
    var sum = 0;
    for(var i=0;i<rest.length;i++){
       sum += rest[i]
    }
    return sum;
}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值