函数.参数.return .arguments

函数

(1)函数是一个js的数据类型,叫做function

(2)是一个复杂数据类型(地址/引用)

(3)就是一个“盒子”,这个盒子可以承载一段代码

(4)涉及到两个过程:

​ 函数定义阶段: 把代码装进盒子的过程
函数调用阶段: 把盒子内的代码执行的过程

一、函数定义阶段

把一个代码装进“盒子”的过程,在这过程中,被装进去的代码是不会被执行的

1、方式1:声明式函数

(1)语法:function 函数名() {你要装进盒子的代码}

​ fanction-------定义函数的关键字

​ 函数名-------给盒子起的名字,遵守变量命名规则和规范

​ ()-------- 书写参数的位置

​ {} ----------- 代码段,你要装进盒子里的代码

function fn() {
    console.log("hello world")
}

2、方式2:赋值式函数(函数表达式),就是把函数当做一个表达式赋值给另外的内容

(1)语法:var fn = function () {}

var fn2=function() {
    console.log("hello world")
}

二、函数调用阶段

1、两种定义函数的方式, 他们的 调用方式 是一样

语法: 函数名()

  • 函数名 :表示你需要哪一个函数内的代码执行

  • () : 把函数内的代码执行一遍, 意义2: 书写参数

2、两种定义函数的方式, 他们的 调用时机 是不一样

​ (1)声明式函数可以先调用也可以后调用

​ (2)赋值式函数(函数表达式) 只能后调用, 先调用会报错

三、函数的参数

1.形参

(1)书写在函数定义阶段的()内

(2)只能在函数内部使用

(3)可以书写多个,之间用逗号分隔

(4)形参的值由函数调用时传递的实参决定

2.实参

(1)书写在函数调用阶段的()内

(2)就是按照数据依次给形参赋值的数据

(3)可以书写多个,之间用逗号分隔

3.函数的参数默认值

(1)给函数的形参添加一个默认值

(2)当没有传递实参的时候,可以使用默认值

(3)可以书写多个,之间用逗号分隔

(4)语法:直接给形参赋值即可

function fn(a = 100, b = 200) {
      console.log('a : ', a)
      console.log('b : ', b)
    }
// 本次调用没有传递实参, a 和 b 形参都使用默认值
    fn()
 // 本次调用传递了一个实参给到 a, 那么 a 就是被赋值为 1, b 依旧是用默认值
    fn(1)
 // 本次调用传递了两个实参分别给到 a 和 b 了
    fn(10, 20)

arguments

(1)是一个在函数内使用的变量

(2)是函数天生自带的变量

(3)是一个数据集合(承载数据的盒子)

​ 承载的就是该函数被调用的时候传递的所有 实参
函数实参的集合

  • arguments的基本操作

    1.length属性

    (1)语法表示:arguments.length

    (2)表示:该数据集合内有多少个数据 也就是多少个实参

    (3)得到:一个数据类型(Number)

    2.索引属性

    (1)arguments 内的数据是按照顺序依次排列的

    (2)arguments 内的每一个数据都有一个自己的 “序号”(索引/下标)

    (3)索引(下标): 从 0 开始, 依次 +1

    (4)可以利用索引去访问 arguments 内的每一个数据

    (5)语法: arguments[索引]

    ​ 得到的就是该索引位置对应的数据

    ​ 如果没有该索引位置, 那么就是 undefined

    (6)最后一位的索引一定是 arguments.length-1

    3.遍历 arguments

    (1)从到到位获取到每一个数据

    (2) arguments 内可以利用索引去访问每一个数据

    (3)arguments 内的索引是一组有规律的数字(从 0 开始, 依次 +1)

    (4) 循环可以给我们提供一组有规律的数字

    (5)可以利用 循环 去遍历 arguments

    ​ 使用循环控制变量去充当索引访问 arguments 内的每一个数据

function fn3() {
  // 准备变量接受求和结果
  var sum = 0
  //  遍历 arguments
for (var i = 0; i < arguments.length; i++) {
    sum += arguments[i]  // 把 arguments 内的每一个数据叠加到 sum 身上
  }
  console.log(sum)  /*把 sum 输出*/
}

函数的return

作用:

1、给函数添加一个返回值

​ 在函数内以 return 关键字确定该函数的结果 return 数据

2、打断函数:书写在return后的代码不会继续执行

fn 与fn()

(1)fn是一个变量名,存储的是该函数的“地址”,书写这句代码的时候,不会执行函数内的代码

(2)fn() 表示把 fn 这个函数内的代码从上到下的执行一遍, 并且会根据 return 来决定是否得到返回值

/*封装函数判断一个数字是否是质数*/
function isPrime(n) {
  if (isNaN(n)) return false
  n = Number(n)
  for (var i = 2; i <= n / 2; i++) {
    if (n % i === 0) break
  }
  return i > n / 2
}
----------------------------------------------
/*封装一个函数,求一个数字的阶乘*/
function fn(n) {
  // n 就是要求阶乘的数字

  // 1. 判断是不是一个数字
  if (isNaN(n)) return 0
  // 2. 把参数转换成数值类型
  n = n - 0
  // 3. 求 n 的阶乘
  var total = 1
  for (var i = n; i >= 2; i--) {
total *= i
  }
  // 4. 把 total 当做返回值
  return total
}
console.log(fn(8))

自调用函数

1.函数表达式的一种特殊使用方式
2.不严格区分函数的定义阶段和调用阶段,直接定义函数, 定义完毕以后直接调用, 并且不能进行二次调用

3.语法:

(1) (function () {})()

(2)~function () {}()

(3)!function () {}()

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值