函数
1、概念
- 函数等价于某个项目的功能
- 由一段代码组成,能够实现某个或者多个功能的代码段,叫函数
- 主动执行或者行为调用
2、封装之后的特点
- 选择执行
- 重复执行
- 忽略细节
3、组成
- 功能代码
- 有入口
- 有出口
- 有名字
4、函数的语法
- 函数的创建
function fn(){......}
- 函数的执行
fn();
- 小括号会执行函数,小括号会将自身前面的内容作为函数执行,哪怕不是函数
5、函数的创建(详细讲解)
1、声明式创建函数
function fn(){......}
- 其中
function--------------关键字
fn--------------------函数名
()--------------------函数的入口(参数)
{}--------------------函数体,功能代码所在位置
2、赋值式创建函数
var f = function(){}
6、函数的分类
1、有名函数:
function fn(){}
也被称作为正常函数,可以正常的使用,没有异常,如果需要执行相关的函数只需要使用函数名对相关的函数进行调用
2、无名函数:
function(){}
不完整函数,不允许直接使用,只能作为值存在
使用环境:
1、作为 赋值式创建函数 的值
2、作为事件处理函数,被事件执行
3、作为实参使用,叫回调函数
4、作为函数的返回值使用,叫闭包函数
5、作为匿名函数的函数体使用,立即执行
7、函数的执行
1、直接执行:
函数名 + ();
2、被事件执行:onclick中on是绑定事件的一种形式
(1)btn.onclick = 函数名 注意:函数名后无“()”,添加了之后自动执行
(2)btn.onclick = 无名函数 注意:无名函数为点击事件的方法
8、事件的分类
1、鼠标类
单击:click
双击:dblclick
按下:mousedown
抬起:mouseup
移动:mousemove
进入:mouseover / mouseenter
离开:mouseout / mouseleave
右键:contextmenu
2、键盘类
按下:keydown
抬起:keyup
按下并抬起:keypress
3、页面或浏览器类
滚动:scroll
加载:load
改变大小:resize
4、表单类:
获取焦点:focus
失去焦点:blur
改变内容:change
输入:input
提交:submit
重置:reset
注意:当前时间应添加给那个事件源。
注意:当前时间应该怎样的行为触发。
绑定事件的方式:事件源,on事件名 = 事件处理函数
btn.onclick = function(){......}
9、函数的入口 - 参数
1、实参:要传入的数据
2、形参:用来接收传入的数据的变量
3、个数和类型:任意个任意类型的参数
4、实参和形参的对应关系:从左向右一一对应
5、当一个函数fn1,作为参数传入到另一个函数B中,在函数fn2中,执行,那么作为参数的函数fn1,叫回调函数
注意:参数的数量不一致时可以分为两种:
1、实参多,形参少,无法通过形参拿到多个实参…
2、形参多,实参少,多出来的形参为undefined
在函数内部有一个隐藏对象,主动使用,这个对象叫arguments
arguments的作用:用来接收所有实参
当实参的个数,固定时,建议使用形参接收
当实参的个数不固定时,建议使用arguments接收
10、arguments
1、函数内部有一个隐藏对象,用来接收所有实参
2、类数组(伪数组)
具有的索引和长度的概念,但是不能使用个数组的某些操作
3、利用数组的索引和长度配合循环,获取arguments中保存的实参
计算机中索引从0开始
4、应用场景:当函数的实参个数不确定时,可以使用arguments找到所有的实参
11、出口 - 返回值
1、关键字:return要返回的数据或变量
- return不仅可以返回数据,还会终止当前函数
- 所以一个函数只能执行一次return
- 一个return后只能跟一个数据
2、返回值的应用场景
- 用来处理数据的函数
- 实现功能的函数
3、没有return的函数,会返回undefined
4、可以返回所有类型的值
12、作用域
1、变量生效的区域
2、全局作用域内的变量,叫做全局变量
- 不属于任何一个函数的区域
3、局部作用域内的变量,叫局部变量
- 某个函数内部的区域
4、局部作用域不能使用局部作用域的变量或数据(子可以拿父)
5、全局作用域不能使用局部作用域的变量或数据(父不可以拿子)
6、全局变量的生命周期
- 随着程序的启动被创建,程序完全结束后,才会被删除
- 相对于局部来说,比较占用空间
7、局部变量的生命周期
- 随着作用域的开启被创建,作用域的结束被删除
8、尽量少用全局
以上都是本人的相关简介以及所了解到的知识点,作为分享和自我回顾使用,内部要是出现什么错误或者拥有什么可以进行补充欢迎各位私聊相互学习
如有什么可以优化的地方也欢迎广大观众老爷进行提出