用最简单的语言带你了解Javascript之3:函数

基本介绍:

概念:由一堆代码组成,实现了某个功能,可以直接执行或通过行为调用的代码段。
特点:重复使用,选择使用,忽略细节。
函数也是一种变量

创建函数:

  1. 声明式
    声明关键字: function
    function fn(){}
    fn 函数名
    () 参数
    {} 执行语句(函数体)(函数的功能代码)

  2. 赋值式
    var fn = function(){}
    不能把函数整体提升

    函数的执行
    一般情况:函数名+()
    另一种情况:行为调用/事件调用

事件和函数的关系:
用户通过触发事件,执行对应的函数
事件,执行,函数
函数:事件处理函数

事件源:触发事件的源头
事件类型:什么行为(点击,双击。。。)
事件处理函数:触发事件源的对应的事件类型,直接被执行的函数

事件类型有哪些?

		鼠标:
			点击		onclick
			双击		ondblclick
			按下		onmousedown
			抬起		onmouseup
			进入		onmouseover		onmouseenter
			离开		onmouseout		onmouseleave
			移动		onmousemove
			鼠标右键事件 oncontextmenu

注意
返回当事件被触发时,哪个鼠标按钮被点击。button
返回当某个事件被触发时,鼠标指针的水平坐标。screenX
返回当某个事件被触发时,鼠标指针的垂直坐标。screenY
返回触发此事件的元素(事件的目标节点)。target

		键盘:
		
			 按下		onkeydown
			 抬起		onkeyup
			 按下并抬起	onkeypress

			ps: 键盘事件只能加给具有焦点的元素,或document

表单控件:

			失去焦点:	onblur
			获取焦点:	onfocus
			输入		oninput
			改变		onchange
			提交		onsumbit
			重置		onreset

页面

			页面加载结束	onload
			滚动			onsorll
			改变大小		onresize
			发生错误		onerror

统一语法:
事件源.事件类型 = 事件处理函数

参数:

  • 函数在执行时的参数:形参

  • 函数在定义时的参数:实参
    实参可以传递任何数据,相当于变量中可以保存任何数据
    实参被形参接受并保存
    形参相当于变量,实参相当于具体的值

      参数可以有多个:
      	形参和实参的数量一致:一一对应
      	形参多,实参少:		多出来的形参为undefined
      	实参多,形参少:		多出来的实参被传到函数中的augments区域中;
    
arguments:
		只能在函数内部拿到
		是一个专门用来存储所有实参的数组对象。
		arguments.length	长度,实参的个数
		arguments[i]		索引,每个实参

函数的写法:

  1. 常见:有名函数,声明式创建的函数,正常函数,正常执行,正常使用
  2. 无名函数,非正常函数,不允许直接存在
    2-1.可以作为值存在---->赋值式创建函数
    2-2.可以作为实参存在---->回调函数
    2-3.可以作为行为处理函数存在---->事件处理函数
    2-4.可以作为匿名函数的函数体存在---->匿名函数
  3. 匿名函数:立即执行,好像没写函数一样
    (function(){})()
回调函数:
	将函数A作为参数,传到另一个函数B中,在函数B中执行函数A,那么作为参数的函数A就是回调函数
	
	js中的特色部分,解决了js中的异步问题
return:
	为什么要有返回值?
		如果函数处理的结果或数据需要二次使用,怎么拿到数据
	怎么返回值?
		关键字:return
		return要返回的内容
	return的作用:
		将函数内部处理的数据或结果,返回到函数外部进行二次使用
		立即结束函数
		所有函数都有返回值,没有return,返回值为undefined,有return就是return后面的值
		
		
	return的应用场景:
		功能函数可以有,但是不需要返回值
		数据处理函数必须有
作用域:

生效的区域,可以被使用的区域。

  • 全局:整个代码空间

  • 局部:函数内部就是局部作用域

      全局变量和局部变量重名 
      	在局部作用域内,局部会覆盖全局
      	在全局作用域内,局部不会覆盖全局
      	
      	
      	函数的形参相当于当前所属函数的局部变量
      	
      	如果在当前作用域中,没有找到要使用的变量,那么会自动上级作用域查找,如果都没有,就会报错
    

    变量的生命周期:
    全局变量:一直存在,跟随程序的结束而结束
    局部变量:在作用域开始的位置被声明,结束的位置被删除。

      全局相对于局部:方便,但是比局部消耗性能,尽量少用或不用
      折中法:给变量外面加一个匿名函数
    
    提升:
      var的提升:
      	提前声明,远处赋值
      
      function:
      	整体提升
      	
      var的提升要先于function的提升,所以会执行func的内容,var的内容会被function所替代
    
      赋值式创建函数:提升的是变量,不是函数
    
递归:
	函数自己在内部调用自己
	递	转递
	归	归来
构造函数:

注意:构造函数不是一种函数,是一种执行方式

	创造对象,为面向对象服务
	机器,批量产出相同功能,不同特点的对象的机器
	构造器:机器,构造器
	
基本的构造函数:
	内置的构造函数:创建数据
	构造函数方式创建
		字符: var s = new String();
	字面量方式创建
		字符: var s = "hello"
	
高级的构造函数
	自定义的构造函数(这里要到后面才能说到)
	
	
只要被new执行,返回值必然是对象
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值