【JS】函数基础

一、概念

1. 定义

  1. 函数是具有特定功能的代码块
  2. 函数是 JavaScript 中的一种数据类型,属于对象类型,使用 typeof 判断可以得到 function
// isFinite() 判断参数是否是有效数字
console.log(isFinite());  //false
// 检测的是 isFinite() 的返回(调用结果)
console.log(typeof isFinite()); // boolean
// isFinite 是函数名,本质上是变量名,该变量的值是一个function类型的数据
console.log(isFinite);  //  [Function: isFinite]
// 检测的是 isFinite 变量的值
console.log(typeof isFinite); // function

2. 函数的作用

  1. 提高代码的重用性
  2. 利用函数实现编程的模块化
  3. 封装代码,让函数内部的代码对外部不可见

3. 函数的组成

函数名: 如果一个变量的值是函数类型的数据,该变量就被称为函数,变量名就是函数名。

函数体: 函数内部的代码块。

参数: 调用函数的时候,可以通过参数向内部传递数据。

返回值: 函数调用得到的结果。

在这里插入图片描述

二、函数的声明

1. function 关键字方式

function 函数名(参数) {
	函数体语句;
}

2. 表达式方式

使用函数直接量创建函数并赋值给变量

var 函数名 = function(参数) {
	函数体语句
}

3. Function函数方式

var 函数名 = Function('');//代码写在字符串里

4. Function构造函数方式

var 函数名 = new Function();

三、函数的调用

  1. 函数后面加 () 可以调用函数
  2. 函数只有被调用了,函数体语句才能执行;函数可以被多次调用,每调用一次,函数体语句执行一次。
  3. 函数只有被调用才能获取到函数的返回值

四、函数的返回值

  1. 函数调用的结果就是函数的返回值, 函数调用表达式(函数名())的值就是函数返回值,没有返回值的函数的调用结果是undefined
  2. 在函数体内,使用return关键字可以设置函数的返回值
    • return 的右边需要写表达式,表达式的值就是函数的返回值
    • return 的右边如果是空的,该函数没有返回值
  3. 函数中一旦执行到了 return,函数调用结束,return 之后的代码不会执行。可以结合if语句,就不需要写else分支
function sum(a,b) {
  return a + b;
}
var result = sum(4, 1)
console.log(result);
function fun(n) {
  if (n % 2 == 0) return true;
  return false
}
let num1 = fun(2);
let num2 = fun(5);
console.log(num1);  //true
console.log(num2);  //false

五、函数的参数

1. 形参和实参

形参:声明函数的时候设置的参数就是形参,此时的形参是一个没有赋值的变量,只可以在函数内使用

实参: 在调用函数是使用的参数就是实参,实参用于给形参赋值,实参的形式可以是直接量、变量、表达式。

2. 形参和实参数量问题

  1. 实参的个数应该与形参一致
  2. 如果实参个数>形参个数,实参按照顺序给形参赋值,多余实参没有用
  3. 如果实参个数<形参个数,实参按照顺序给形参赋值,没有被赋值到的形参,自动得到undefined
function add(a, b, c) {
  var sum = a + b
  console.log(sum);
  console.log(a, b, c); //1 2 undefined
}
add(1, 2)

3. 形参的默认值(可选参数)

注意:有默认值的形参需要写在参数列表的后面!

JS函数允许形参有默认值,有默认值的形参,在调用函数的时候,可以没有与之对应的实参!

ES5设置形参默认值的方式:

function 函数名(形参1,形参2) {
    if (形参2 === undefined) {
    	参数2 = 默认值;
    }
}

ES6设置形参默认值的方式:

function 函数名(形参1,形参2=默认值) {}

4. arguments

  1. arguments 是系统创建的变量,在调用函数时创建,只能在函数中使用
  2. arguments 是类数组,成员是调用函数时传的所有的实参,具有 length 属性,可以通过索引获取其中的成员
  3. arguments 是除了形参之外,另一种获取实参的方式,不受到数量的限制,用于定义可变参数数量的函数
// 定义函数,计算所有参数的和
function sum() {
  // 定义变量记录和
  var res = 0;
  // 遍历所有参数
  for (var i = 0; i < arguments.length; i++) {
    res += arguments[i];
  }
  // 返回结果
  return res;
}
var result = sum(4, 1, 2)
console.log(result);

六、练习

// 定义函数 max,实现返回参数中值最大的,参数都是数字
function max() {
  var res = arguments[0]
  for (var i = 1; i < arguments.length; i++) {
    if (arguments[i] > res) {
      res = arguments[i]
    }
  }
  return res
}
var result = max(2, 33, 5, 7, 10)
console.log(result);
// 封装数组排序的函数,参数是数组,返回值是排好序的数组, 
// 参数1是数组,参数2是布尔值,fasle表示降序,true表示升序,默认值false
function sort(arr, bol = false) {
  for (var i = 1; i < arr.length; i++) {
    for (var j = 0; j < arr.length - i; j++) {
      if (bol) {  // 升序
        if (arr[j] > arr[j + 1]) {
          var temp = arr[j]
          arr[j] = arr[j + 1]
          arr[j + 1] = temp
        }
      } else {  // 降序
        if (arr[j] < arr[j + 1]) {
          var temp = arr[j]
          arr[j] = arr[j + 1]
          arr[j + 1] = temp
        }
      }
    }
  }
  return arr
}
console.log(sort([2, 23, 4, 65, 1], true));
console.log(sort([2, 23, 4, 65, 1]));
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值