js简介(function)

函数的定义及好处

(1)函数就是把特定功能的代码抽取出并进行封装,用来重复执行一些功能

(2)使用函数的好处:

函数可以重复某一部分代码(通过函数名调用)

使程序变得更简短而清晰

便于程序维护

函数的定义

· 关键字function声明(声明式):
格式:function 函数名(){}
· 函数表达式(赋值式)
格式:var 函数名     = function(){}
· Function构造函数(不推荐)
var sum = new Function(‘num1’,’num2’,’return num1+num2’);

尽量避免与变量重名

函数的分类

内置函数 alert()

自定义函数

匿名函数

函数的执行

声明提前:

1.执行js代码前,会将所有的声明提前到当前作用域的最前面。

2.当声明提前完成后,才从上往下执行js代码。

备注:不能再赋值式声明函数前,先使用函数,这样会报错:is not a function(声明提前)

关键字 function声明的函数,可以在函数前后任意调用。

 运算无法进行下去会进行隐性转换 、与数字运算无法进行输出NaN.
执行类型

1.手动调用:

sum();

2.事件驱动:

格式:元素.事件 = 函数名(或者匿名函数);
buton.onclick = sum;
常用事件

· onclick:点击事件

· ondblclick:双击事件

· onmouseover:鼠标移入事件

· onmouseout:鼠标移开事件

· onchange:内容改变事件(一般用于表单元素)

onkeyup:键盘按键弹起事件

作用域

1.全局作用域:函数最外层。

2.局部作用域:函数内。

3.全局变量:声明在全局作用域中的变量,在任意位置使用。

4.局部变量:声明在局部作用域中的变量,只能在当前函数内使用。

变量的访问规则

就近原则(如查找变量a):

* 使用变量a时先从当前函数查找,如果有则可以使用;

* 如果当前函数无变量a,则往父级函数查找,如果找到则使用,并停止查找;

* 如果在父级函数还是无法找到,则继续往上一层函数查找,以此类推;

* 直到最顶层(全局作用域),如果还是没找到,则报not defined错误;

作用域链

当函数访问变量时,根据就近原则从内到外查询变量,这个路径称为作用域链。

函数的实参与形参

函数的传参:传参的作用:将值传入函数内

形参:函数声明时的参数(变量)形式参数

实参:函数执行时的参数 实际参数

注意:形参和实参的数量可以不同

argunments

一个类数组,保存着实参的信息

arguments[n (从0开始)] 可以获取到实参的长度

argunments.length 获取实参的长度

函数返回值 return

1. 传参是将值传进函数内,return是将值返回到函数外,需要用一个变量接收。
  1. 如果函数没有return,执行完后返回undefined
    return终止函数的执行,即return后的代码不会执行

this 当前对象

取决于谁调用了这个函数。

1。大多数情况下,执行函数的对象一般都是window

2。事件驱动执行函数,那么此时的this 指向执行函数的对象.

递归:自己执行自己

*需要一个退出函数return条件,若不存在退出条件会死循环。

--num(先自减再返回值)num--(先返回值再自减)

*递归前输出,正向输出

*递归后输出,按最后一次递归的值输出。

回调函数

若想执行乙,但是需要甲的一个变量,选择在甲函数里面执行乙函数。

!!!!函数作为参数!!!!!!

数组Array:一个变量存储多个信息

1.获取数组某个信息 索引从0开始计算。

2.属性length 数组的长度。

函数的传参(基本数据类型与引用数据类型的区别)

(1)基本数据类型传参

(2)引用数据类型传参(其实传递的是地址,复制出去的数的值改变,会影响到原数组的值)