背景提要
如果你需要多次使用同一段代码,为了提高效率,你会怎么做呢?答案就是题目——函数,把代码们封装成一个函数。函数(function)就是一组允许在你的代码里随时调用的语句。每个函数实际上是一个短小的脚本。
良好编程习惯——定义
作为一种良好的编程习惯,应该先对函数用 function 做出定义再进行调用,大家要谨记哦。
看例子:↓
function shout(){
var Beatles=Array("John","Paul","George","Ringo");
for (var count=0; count<Beatles.length;count ++)
{
alert(Beatles[count]);
}
}
上面的函数的循环语句,将依次弹出对话框来显示Beatles乐队成员的名字。现在,如果想在自己的脚本里执行这一动作,就使用 shout() 来调用这个函数就OK啦。
参数
函数不仅仅是避免重复键入大量相同的内容,函数的威力也体现在,你可以把不同的数据传递给它们,而它们将使用这些数据去完成预定的操作。我们把传递给函数的数据叫做参数(argument)。
JavaScript提供了很多内建函数,出镜率很高的 alert 就是其中之一。这个alert函数需要我们提供一个参数,它将弹出一个对话框来显示这个参数的值。
我们在定义函数的时候,也可以声明任意多个参数,用逗号分隔开就行了。在函数内部,你可以像使用普通变量那样使用它的任何一个参数。
看看下面这个含有两个参数的例子。↓
function multiply(num1,num2)
{
var total=num1*num2;
alert(total);
}
在定义了上面函数的脚本里,你可以从任意位置调用它。看下面如何调用。
multiply(10,20); //把10和20两个参数传递给multiply()函数的结果就是 200。
显示在页面上的效果就是一个 显示 200的对话框。
函数不仅可以像上面那样以参数的形式接收数据,还能够返回数据,可以返回一个数值,一个字符串,一个数组或者一个布尔值。这时候就要用到return 语句。
function multiply(num1,num2)
{
var total=num1*num2;
return(total);
}
下面这个例子只有一个参数(华氏摄氏度值),它将返回一个数值(同一温度的摄氏温度值):
function convertToCelsius(temp ) //华氏温度转换为摄氏温度的函数
{
var result=temp -32;
result=result/1.8;
return result;
}
真正价值体现!
上面说到了函数的参数,返回语句,冥冥中觉得JavaScript的函数应该更厉害。函数的真正体现就是,我们可以把函数当做一种数据类型来用,就是可以把函数的调用结果赋给一个变量。
var temp_fahrenherit=95; //华氏摄氏度为95度
var temp_celsius=convertToCelsius(temp_fahrenherit); //调用华氏温度转摄氏温度的函数,并把结果赋给变量
alert(temp_celsius);
上面这个例子里,你肯定发现了变量的命名和函数命名的区别了吧!在命名变量的时候,我们用下划线来分隔各个单词。命名函数的时候,从第二个单词开始把每个单词的首字母大写,也就是驼峰表示法。
这么做的目的,显而易见,我们可以一眼看出哪个是变量,哪个是函数。JavaScript不允许变量和函数命名中出现空格,所以,驼峰可以在不违法这一规定的前提下,把变量和函数的名字以一种简单的方式区别开来。
变量作用域
前面我们提到有一个好的编程习惯就是给函数命名,所以在你第一次给变量赋值的时候也要用var做出声明当你在函数内部使用变量的时候,更应该如此。
变量分为两大类,全局变量,局部变量。讨论它们区别的时候,其实就是在讨论变量的作用域。
全局变量(global variable)可以在脚本的任何位置被引用。脚本的任何位置当然也包括函数的内部。
局部变量(local variable)只存在于声明它的那个函数的内部,在函数外部是无法引用的。局部变量的作用域仅限于函数内部。
刚刚提到的var关键字在此时就发挥作用了,如果某个函数中使用 var关键字命名变量,那么变量就被视为局部变量。如果没有使用var 就被视为一个全局变量。如果脚本里已经存在一个同名的全局变量,那么函数里的全局变量就会改变脚本中已存在的那个全局变量的值。
解释起来很热闹,看看例子更清晰一点:
function square(num)
{
total =num *num ;
return(total);
}
var total =50;
var number=square (20);
alert (total); //返回400
上面的square函数中就隐藏了一个没有用关键字 var 命名的变量——total。本来我只是想让square()函数把它计算出来的平方值返回给变量number,但是因为没有把square()函数内部的total变量明确的定义为局部变量,结果函数内部的变量就把函数外部同样命名为total的全局变量值也改变了。
把函数中的total变量定义为局部,就可以保证全局变量total的安全啦!
function square(num)
{
var total =num *num ;
return(total);
}
var total =50;
var number=square (20);
alert (total); //返回 50
函数在行为方面应该像一个自给自足的脚本,在定义一个函数的时候,我们一定要把它内部变量全都明确地声明为局部变量。如果你总是在函数里使用var关键字来定义变量,就能避免任何形式的二义性隐患!
小结
今天简单复习了对于JavaScript的函数知识,希望可以给你带来一些收获~~下次见