方法:对象(属性,方法)
函数
注 : 函数和方法本质是一样的,函数在对象里面就叫做方法
定义方式一
绝对值函数
function abs(x) {
            if (x>=0){
                return x;
            }else {
                return -x;
            }
        }
一旦执行到return代表函数结束,返回结果!
如果没有执行return ,函数执行完也会返回结果,返回undefined或NAN
定义方式二
var abs = function(x){
    if (x>=0){
                return x;
            }else {
                return -x;
            }
}
方式一和方式二等价
abs(20)   //20
abs(-20)  //20
参数问题:JavaScript可以传递任意个参数,也可以不传递参数
假设不存在参数,如何规避?
let abs = function(x){
            if (typeof x!==‘number‘){
                throw ‘not a number‘;
            }
            if (x>=0){
                return x;
            }else {
                return -x;
            }
        }
多余的参数传进来会不会有问题?
arguments
arguments是一个js免费赠送的关键词
代表传进来的所有参数,是一个数组
let abs = function(x){
            console.log(‘x=‘+x);
            for (let i=0;i<=arguments.length;i++){
                console.log(arguments[i]);
            }
        }
//  >abs(1,2,3,5)
//	x=1
//	1
//	2
//	3
//	5
问题:arguments包含所有的参数,有时我们想用多余的参数进行操作,需要排除已有的参数
rest
以前:
  let abs = function(x,y){
            console.log(‘x=>‘+x);
            console.log(‘y=>‘+y);
            for (let i=2;i<=arguments.length;i++){
                console.log(arguments[i]);
            }
        }
ES6新特性,获取除了已经定义的参数外的其他所有参数
let abs = function(x,y,...rest){
            console.log(‘x=>‘+x);
            console.log(‘y=>‘+y);
            console.log(rest);
            
        }
//  >abs(1,4,2,34,5,6)
//  x=>1
//  y=>4
//  [object Array]: [2, 34, 5, 6]
rest参数必须写在最后面,并且使用...标识
原文:https://www.cnblogs.com/shenhuagushisu/p/14491279.html