JS函数

90 阅读4分钟

一、概念

  1. 将反复使用的功能代码,(封装)成一个独立的模块,这个模块称为函数;

2.优点:一次封装,多次使用(增加代码的复用度)使程序更加可控;

3.函数的分类

function:

  • 内置(内建、库、系统)函数;
  • 自定义函数;
  1. 函数的类型: function

二、函数的声明

  1. 语句定义(声明式) 在任意位置都可调用
function 函数名([参数]){
功能
}

2.表达式定义法(赋值式) 只能先声明,后调用

var 变量名= function([参数]){
功能
}

三、函数的调用

一般调用:函数名([参数]);

事件调用:当触发;

四、函数的参数

1.实际参数(实参);调用函数时传递的参数,实际给的变量可以是多个;

  • 实参可以是变量,常量,表达式;
  • 实参数量大于形参数量时,多余的实参自动省略;
  • 实参数量小于形参数量,多余的形参值为undefined;
  • 传参时,只能由实参传递给形参,即单向传递;
  1. 形式参数(形参):定义函数时接收数据的参数只能是变量(别人给);

五、函数的返回值

return 函数的返回默认值为undefined

  1. 将结果返回到调用函数的地方;
  2. 结束函数;

六、事件

  1. 常用事件 onload:加载事件

onfocus:聚焦事件;

onblur:失焦事件;

onchange:改变事件;

onclick:单击事件;

ondblclick:双击事件;

onmousedown:鼠标按下事件;

onmouseup:鼠标弹起事件;

onmousecenter:鼠标移入事件;

onmouseleave: 鼠标移出事件;

onlouseover: 鼠标移入事件;

onmouseout:鼠标移出事件;

onmousemove:鼠标移动事件;

onkeydown:键盘按下事件;

onkeyup:键盘弹起事件;

onkeypress: 键盘按过事件;

七、事件与函数的关系

  1. 先获取页面中所操作的元素对象;
  2. 实现功能;
  3. 添加事件;

八、作用域及作用域链

作用域:作用的范围;

进入作用域:浏览器启动,js解析器;

  1. 如果找到var,则提取后面变量名,并给它初始化一个undefined的值;
  2. 如果找到function则提取函数名放在内容中,并将整个函数块赋值给她;
  3. 如果变量与函数同名时,则丢变量,保函数;
  4. 如果有多个script则从上到下逐行读代码;

作用域

  1. 全局作用域 script作用域,也叫做全局作用域,声明在全局作用域中的变量叫做全局变量,作用范围在整个页面,生存周期与页面同寿,同时也是window对象的属性;
  2. 函数作用域(局部作用域) 声明在局部作用域中的变量,叫做局部变量,作用范围在当前作用域中,生命周期函数,调用函数时产生,不调用时结束;
  3. 局部变量:在函数中以var关键字定义的变量就叫做局部变量,局部变量只能在所在的函数内部有效;
  4. 全局变量:可以整个脚本域中有效的变量
  5. 作用域链:子作用域如果没有,则向父作用域查找,父作用域也没有,向父级的父级作用域查找
  6. 如果子级作用域中没有找到变量时作用域链向父级寻找,父级也没有,但表达式为赋值表达式时,会是赋值表达式在全局作用域中自动生成该变量;

递归函数: 自己调用自己的过程

本质:循环(从哪里开始,到哪里结束,步长)

匿名函数(为了解决命名冲突)

  1. 将匿名函数赋值给一个变量;
  2. 绑定给事件;
  3. 自我调用;
(function(){
alert()
})()

匿名函数传参

(function(a,b){
return a+b
})(3,4)

构造函数

对象(object/物体):一切具有本质特征和行为的事物;

属性: 本质特征 === 变量

方法: 行为 === 函数

类:相同的对象 具有相同属性和方法的集合,抽象出来的概念,不存在的。

如何创建对象:

  1. 字面量方式:{} 直接 var obj={name:xx, age:""};
  2. var object=() 内置构造函数;
  3. new 自定义构造函数 可以批量创建同类型的对象;

instanceof:判断 一个对象是否属于某一类,返回布尔值;

如何访问对象中属性和方法

  1. 对象.属性 对象.方法();
  2. 对象["属性"] 对象"方法";

接下来进入数组=>