函数的定义
我们经常在脚本的很多地方需要使用到同样的代码,这时候就需要使用函数来实现。
比如在访客登陆,退出等情况下,我们需要弹出提示框,这时候就需要使用函数来实现。
函数本质就是将一段代码给封装起来,作为一个功能,这样就可以重复使用。
函数是程序的主要“构件模块”,函数可以调用很多次,这就大大减少了代码量。
函数的声明
先举一个例子:
function showMessage() { alert("Hello World!"); } 复制代码
我们来解释一下,首先定义函数的时候,出现function关键字,接着是函数名,然后是一对括号(括号里面可以写上需要传进函数的参数,没有则可以不写),括号里面的参数使用逗号隔开,然后花括号里面的部分就是函数体。
调用函数:在调用函数的时候,函数名后面跟着一对括号,括号里面可以写上需要传进函数的参数,没有则可以不写。
比如:
showMessage(); 复制代码
局部变量
函数内部的变量,只在函数内部有效,函数执行完毕后,变量就会被销毁。
例如:
function showMessage() { var msg = "Hello World!"; alert(msg); } showMessage(); console.log(msg); // 报错,msg is not defined 复制代码
在上面的代码中,我们在函数内部定一个msg变量,函数执行完毕后,msg变量就会被销毁。可以看到在函数内部,该变量可以正常使用,但是在函数外部,却报错了。因为我们没有定义该变量,所以报错。
全局变量
全局变量又称外部变量,是在函数外部定义的变量,可以在函数内部使用。
函数对全局变量拥有全部的访问权限。这就意味着函数可以修改外部变量
注意:1.只有在没有局部变量的情况下,函数才会使用外部变量;如果函数内部定义了局部变量,那么函数内部的局部变量会覆盖外部变量(外部变量被忽略)。
2.在任何函数之外声明的变量,都被成为全局变量。
3.全局变量在任意函数中都是课件的(除非被局部变量屏蔽,也就是局部变量的名字和全局变量的一样)。
4.全局变量的作用域是整个程序。
默认值
前面我们提到,有些函数是需要传值进去的,这个传进去的值,我们把它叫做参数;如果一个函数需要传参,但是我们没有提供值的话,那么在函数对应的变量那里,它的值会变成undefined。
例如:
function showMessage(msg) { alert(msg); } showMessage(); // undefined 复制代码
在JavaScript中,每次函数在没有带个别参数的情况下,默认参数会被计算出来。
返回值
函数可以将一个值返回到调用代码中作为结果,这个被返回的值就被称作返回值。
例如:
function sum(a,b){ result = a+b; return result; } let result1 = sum(1,2); alert(result1)//3 复制代码
这段代码就是两数相加,最后将结果返回。
注意:
- return这个指令可以在函数的任意位置(不一定要在函数末尾);但是当函数执行到这里的时候,函数将会停止,并且将结果返回给调用代码(例如上面例子里的result1)。
- 函数中可以不止出现一个return,比如在条件分支语句中,可以根据分支情况书写多个return语句。
- return语句不一定不许有返回值,也就是说,return语句可以是空的,但是这会导致执行到return语句时函数立即退出。
- 空值的return或者没有return语句的函数,他们最后返回回去的都是undefined。
- 不要在return与返回值之间添加新行,因为在JavaScript中默认会在return后面加上分号,如果你添加了新行,那么就意味着你在return语句结束之后书写的代码(这是会被浏览器忽略的)。