函数:函数就是最基本的一种代码抽象的方式

1.定义函数

function abs(x){
  if(x>=0){
    return x;
  }else{
    return -x;
  }
}
//function 指出这是一种函数定义
//abs是函数名称
//(x),是函数参数,多个参数用逗号分开
//{...}是函数体

//匿名函数的形式,function(x)是匿名函数,这个匿名函数赋值给了变量abs,两种函数的定义方式等价
var abs = function(x){
  if(x>=0){
    return x;
  }else{
    return 0;
  }
}

2.调用函数

//函数示例
function abs(x){
  if(x>=0){
    return x;
  }else{
    return -x;
  }
}

abs(10); //10, 调用的常见形式
abs(10, "demo");//10, 传入多于要求的参数也没有关系,函数不处理多余的参数
abs(); //NaN; 此时传入的参数为undefined,因此结果为NaN

//避免传入的参数undefined,需要进行如下的判断
var abs = function(x){
  if(typeOf x !== 'number'){
    throw 'not a number'
  }
  else if(x>=0){
    return x;
  }else{
    return 0;
  }
}

3.arguments

arguments是js的关键词,表示传入的参数。

//argument是表示传递进入的参数
function foo(x) {
    alert(x); // 10,是第一个参数
    for (var i=0; i<arguments.length; i++) {
        alert(arguments[i]); // 10, 20, 30
    }
}
foo(10, 20, 30);

//函数不定义参数,也可以拿到参数的值,一般来说argument用来判断参数的个数
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

4.rest

rest表示除了已经定义的参数之外的参数,用argumens可以获取,但是用rest更方便

//使用"...rest"表示
function foo(a, b, ...rest) {
    console.log('a = ' + a);
    console.log('b = ' + b);
    console.log(rest);
}

foo(1, 2, 3, 4, 5);
// 结果:
// a = 1
// b = 2
// Array [ 3, 4, 5 ]

foo(1);
// 结果:
// a = 1
// b = undefined
// Array [],如果rest没有参数值,不返回undefined,而是空数组

5.return的用法

注意1:函数体中存在return,返回return后面的值,若不存在return,函数返回undefined.若直接return;返回undefined.

//不存在return语句,返回undefined
function abs(x){
  //没有return语句,默认是return undefined
  x;
}
abs(1); //undefined

//存在return语句,返回return后面的结果
function abs(x){
  return x;
}
abs(1); // 1

注意2:js会在代码后面直接补全分号,因此return多行,需要用{}

function abs(){
  return
    {name: "jayzen"};
}

//上面的代码自动转换为
function abs(){
  return;
    {name: "jayzen"};
}

//修改代码
function abs(){
  return{
    {name: "jayzen"};
  }
}

results matching ""

    No results matching ""