天天看点

JavaScript 函数

一、JavaScript 函数 是由事件驱动的或者当它被调用时执行的可重复使用的代码块。

函数就是包裹在花括号中的代码块,前面使用了关键词 function:

function functionname()
{
执行代码
}      

当调用该函数时,会执行函数内的代码。

可以在某事件发生时直接调用函数(比如当用户点击按钮时),并且可由 JavaScript 在任何位置进行调用。

(注意:JavaScript 对大小写敏感。关键词 function 必须是小写的,并且必须以与函数名称相同的大小写来调用函数。)

二、局部JavaScript变量和全局JavaScript变量

  在 JavaScript 函数内部声明的变量(使用 var)是局部变量,所以只能在函数内部访问它。(该变量的作用域是局部的)。可以在不同的函数中使用名称相同的局部变量,因为只有声明过该变量的函数才能识别出该变量。只要函数运行完毕,本地变量就会被删除。

  而在函数外声明的变量是全局变量,网页上的所有脚本和函数都能访问它。

三、JavaScript 变量的生存期

JavaScript 变量的生命期从它们被声明的时间开始。

局部变量会在函数运行以后被删除。

全局变量会在页面关闭后被删除。

四、向未声明的 JavaScript 变量分配值

如果您把值赋给尚未声明的变量,该变量将被自动作为全局变量声明。

这条语句:carname="Volvo";  将声明一个全局变量 carname,即使它在函数内执行。

【test】

1.对一个数字(n)执行阶乘操作,将得到1~n 的数字乘积,通常写做3!(1X2X3或者6)。编写一个JavaScript函数,使用递归的方法计算出指定数字的阶乘。

解:可能的解决方案之一:

function findFactorial(n){
       if(n==0){
           return 1;
       }
       return  (n*findFactorial(n-1));
   }
    var num=findFactorial(4);  //将返回 24
    alert(num);      

2.函数如何才能修改其作用域之外的变量?编写一个函数,由1~5的数字组成的数组作为参数,调用该函数后将把其中的数字项替换成相应的字符串表示形式(也就是“one”,“two”等)

解:如果将一个对象(如一个数组)作为函数的参数传入,那么在函数中对这个数组的修改就会反映到函数外部。针对这个问题,其中一种解决方案是:

function makeArray(){
      var arr =[1,5,3];
       alert(arr);
       alertArray(arr);
       alert(arr);
   }

    function alertArray(arrOfNumbers){
        for(var i=0;i<arrOfNumbers.length;i++){
            switch (arrOfNumbers[i]){
                case 1 :arrOfNumbers[i] = "one";
                    break;
                case 2:arrOfNumbers[i] = "two";
                    break;
                case 3 :arrOfNumbers[i] = "three";
                    break;http://i..com/EditPosts.aspx?opt=1
                case 4:arrOfNumbers[i] = "four";
                    break;
                case 5:arrOfNumbers[i] = "five";
                    break;
            }
        }
    }      

3.创建一个函数,它的参数是一个数据对象和一个函数,它将对这个数据对象调用该函数

解:用一个匿名函数就能够满足需求:

function invokeFunction(dataObject,functionToCall){
       functionToCall(dataObject);
   }
    var funcCall = new Function('x','alert(x)');
    invokeFunction('hello',funcCall);      

继续阅读