定义:函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块。
什么是函数?
函数是一组可以随时随地运行的语句。
函数是ECMAScript的核心
作用:
使程序变得更简短而清晰
有利于程序维护
可以提高程序开发的效率
提高了代码的重用性(复用性)
定义函数的方式
1.函数声明
语法格式:function 函数名->符合命名规则 (形参){//业务逻辑}
2.函数表达式
语法格式 :var 函数名=function(形参){//函数体}
这种形式看起来像是常规的变量赋值语句,即创建一个函数并将他赋值给变量名。这种情况下创建的函数叫匿名函数,因为function关键字后面没有标识符。
函数调用
如何调用函数:
1. 函数定义好后,是不能自动执行的,需要调用它,直接在需要的位置写函数名
2.n2>第二种情况:在HTML文件中调用,如通过点击按钮后调用定义好的函数。
参数的分类:
函数的参数分为形参和实参两种。
1形参出现在函数定义中,在整个函数体内都可以使用,离开该函数则不能使用。
2实参出现在主调函数中,进入被调函数后,实参变量也不能使用。
3形参和实参的功能是作数据传送。发生函数调用时,主调函数把实参的值传送给被调函数的形参从而实现主调函数向被调函数的数据传送。
总结: 形参就是函数定义时候用的,实参是在函数调用时候用的。
函数返回值:通过关键字return为函数设置返回值
函数变量作用域
局部变量:
局部变量就是定义在函数内部的变量,这个变量只能在函数内部使用,即作用域范围只是函数内部,另外,形参也是局部变量
全局变量:
全局变量就是定义在函数外部的变量,这个变量在任何函数中都有效,即作用域范围是当前文件的任何地方。
预解析
含义:在当前作用域中,JavaScript执行代码之前,浏览器回默认把所有带var和function声明的变量进行提前声明或者定义
var num = 24;
1.声明:var
num;告诉浏览器,在全局作用域中有num变量了,如果一个变量只是声明了,但是没有赋值,默认值是undefined
num = 12;定义即给变量赋值
var声明的变量和function声明的函数在预解析的区别
var声明的变量和function声明的函数在预解析的时候有区别
var声明的变量在预解析的时候只是提前的声明,function声明的函数在预解析的时候会提前声明并且会同时定义。也就是说var声明的变量和function声明的函数的区别是在声明的同时有没同时进行定义。
预解析只发生在当前的作用域下程序最开始的时候,只对window下的变量和函数进行预解析,只有函数执行的时候才会对函数中的变量函数进行预解析。