- 什么是函数?
首先排除 不是数学中的函数
函数 可以理解为一个盒子
为什么要有函数, 函数功能是什么?
帮我们把项目中多个 地方使用到的功能(代码段), 抽离出来(就把他拿到那个小盒子, 就不需要在多个地方书 写重复的功能)然后在需要的地方 调用函数即可
-
一个完整的函数分为两部分 (1)定义阶段 (2)调用阶段
-
函数的定义
两种定义函数的方式
(1) 赋值式定义 var fn = function () {}
(2) 声明式定义 function 函数名() {} -
函数的调用
不管函数是如何定义的,调用方法永远只有一种
函数名() -
函数的参数是什么
我们的函数在不写参数的时候, 可以正常执行 但! 功能相对单一 如果函数想要真正的灵活起来, 在多个地方调用时 有不同的执行, 那么 我们可以通过 函数的参数来完成 参数分为两个 形参 函数名后(function) 后边的小括号内部, 每书写一个 就相当于在函数内部声明一个变量, 可以在函数内部去调用 实参 调用函数时的小括号内部书写的值, 就是实参, 实参与形参为 一一对应的关系 形参与实参会一一对应 如果实参数量 少于 形参 那么前边的形参对应接受值, 没有对应实参 的 形参 值 为 undefined 如果形参数量 少于 实参 那么会一一对应后, 多余的实参 无法通过 参数获取 -
函数的返回值
* 语法: return 需要返回的内容 * 函数默认返回值 * 我们可以不写 return 函数会默认在代码段最后一行 写上 retrun undefined * * 我需要写返回值吗? * 我什么时候需要写 返回值 * * 返回值的书写 取决于 是否需要得到函数内部某一个变量的值, 如果需要 可以使用返回值将其返回, 如果不需要我们可以不写 * * * return * 具有中断函数执行的功能 * 如果不想中断函数, 那么一定要将 return 放在函数的最后 * 除非就是想要通过 return 中断函数的运行 -
函数小案例
在 1000 到 2000 的数字内, 需要求出 是 4的倍数, 且不是100的倍数的那个数字 输出在页面 但是 每 4个 换一行* 需要参数吗 ? * 需要! 两个 * * 需要返回值吗 ? * 不需要 function fn(a, b) { // 一定要确保 a 的值 小于 b var num = 0 for (var i = a; i < b; i++) { if (i % 4 == 0 && i % 100 !== 0) { // console.log(i) document.write(i + ' ') num++ if (num == 4) { document.write('<br>') num = 0 } } } } fn(1000, 2000) -
函数的预解析
函数的预解析, 可以能会遇上同名变量的变量提升(变量的预解析) 直接以函数为主