JavaScript 函数

函数

1 了解函数

函数就是把特定功能的代码抽取出来并进行封装,用来重复执行一些功能,并起个名字(函数名)。函数对任何语言来说都是一个核心的概念。通过函数可以封装任意多条语句,而且可以在任何地方、任何时候调用执行

使用函数的好处,为什么要使用函数

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

2.使程序变得更简短而清晰

3.有利于程序维护

什么时候需要函数

1.当相同的代码出现多次时

2.当需要提取公共代码时

2 函数的创建方式

2.1 关键字声明(声明式)
格式:function 函数名(){} 

function sum(){}

函数的声明会提前 ==> 解析器会率先读取函数声明,并使其在执行任何代码之前可用(可以访问);

2.2 函数表达式(赋值式)

var sum = function(){} function(){} 没有函数名,故为匿名函数。

2.3 Function构造函数(不推荐)
var sum = new Function(‘num1’,’num2’,’return num1+num2’);

3 函数的执行

3.1 手动调用

在需要执行函数的地方写出函数名,如sum();

3.2 事件驱动

格式:元素.事件=函数名;

button.onclick = sum;

需要注意的是 “()”表示函数立即执行,如果不需要立即执行函数则不需要加()”,此时为点击button触发‘onclick’事件时,才执行sum函数,而不是浏览器编译到这个代码时立即执行函数。

4 常见事件触发函数

4.1 onclick

点击事件,事件的发生都是一瞬间的事情。

4.2 ondblclick

双击事件

4.3 onmouseover

鼠标移入事件

var box = document.getElementById(‘box’);

box.onmouseover = function(){

box.style.backgroundColor:;

}

box.style.backgroundColor:;  boxstyle属性中的background-color赋值,其中background-color改为驼峰命名法。

4.4 onmouseout

鼠标先移入,再移开才触发事件。

4.5 onchange

内容改变,且表单失去焦点时,触发事件(一般用于表单元素)

4.6 onkeyup

键盘按键弹起事件

5 内置函数

JavaScript内部预先定义的函数,如 alert()  /  parseInt()  /  typeof()  /  Math.random() .....

6 声明提前

声明提前,浏览器在逐行执行代码之前,会预存变量声明和函数声明。

var a = 10;  这行代码中的变量声明为 var a ;

function show(){} 声明的方法创建函数,此函数声明为 function show(){}

var sum = function(){} 赋值的方法创建函数,此函数声明为 var sum

声明但没有赋值的变量默认为undefined

7 作用域

俗称“使用范围”,即能够使用某个变量的范围,分“全局作用域”和”局部作用域

7.1 全局变量与局部变量

全局变量:在全局作用域下声明的变量,可以在任意地方中使用,作用范围比较大,我们称为全局变量。

局部变量:在函数内(局部作用域)声明的变量,只在函数中可以使用,作用范围较小,我们称之为局部变量。

var a = 10;

function add(){

var b = 5;

}上述代码中,a为全局变量,b为局部变量。


7.2 变量的访问规则(重点)

7.2.1 就近原则

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

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

3.如果在父级函数还是无法找到,则继续往上一层函数查找,以此类推,直到最顶层window(全局作用域),如果还是没找到,则报not defined错误

7.2.2 作用域链

每个函数在定义时就形成了局部作用域,如果存在多个函数嵌套,他们之间就会建立起某种联系,直到全局作用域,这种联系称之为作用域链。当函数访问变量时,根据就近原则在这个作用域链中从内到外查询变量。

7.3 变量面试题

var a = 10;

function show(){

var b =20;

console.log(a + b);

var a = 30;

}

show();  //NaN

考点:

1.变量查找规则;

2.声明提前:提前到当前所在作用域;

3.顺序执行。

因为console.log(a+b) var a =30 在同一个作用域中,根据就近原则,会访问var a = 30,但由于var a = 30console.log(a+b)的下面,所以只能读取浏览器预存的变量声明var a; 由于没有赋值,所以此时a= NaN

8 函数的参数

8.1 形参

函数声明时的参考数,function sum(a){}; 此处的a为形参。

8.2 实参

函数调用时的参考数。sum(10); 此处10为实参。需要注意的时,在函数内部会自动把形参声明为局部变量;实参为变量的赋值。

function sum(a){

console.log(a);

}

sum(10);此时函数执行,console显示为10,因为在函数内部自动执行了代码var a = 10;  

还有就是形参和实参的数量可以不同。

8.3  arguments

arguments为函数内隐藏的对象(是一个类数组),保存着实参的信息。 参看案例13“封装一个函数计算所有传入参数的和”。

8.3.1 arguments.length

length属性为argument的长度,其中arguments.length为实参的长度,可以作为数值,即实参中有多少个数值。

8.3.2 arguments[]

arguments[索引值],用于调用实参中的某一个数组,需要注意的时索引值是从0开始,0,1,2,3....arguments.length= 15时,arguments索引值范围是0-14

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值