(2)语法2:数组、函数、函数一些细节、匿名函数、动态函数

一、数组
数组用于存储更多的数据,是一个容器
js中的数组定义的两种方式
特点:①长度可变
②元素的类型任意,建议使用数组时,存储同一类型的元素,方便操作(比如算术运算)
数组是js中的最常用容器,有很多功能,待函数处再详细了解
1)数组定义的第一种方式
var arr=[ ]; var arr={2,6,5};

  <script type="text/jscript">
      var arr=[3,1,5,9];

      alert("len:"+arr.length);
      alert(typeof(arr));
      arr[4]=54;
      arr[5]="abc";
      arr[6]=true;
      for(var x=0;x<arr.length;x++)
      {
          document.write("arr["+x+"]="+arr[x]);
          document.write("<br/>");
      }
</script>  

输出:
这里写图片描述
2)数组定义的第二种方式:使用了javascript中的Array对象来定义
var arr=new Array( );
var arr1=new Array( 5);//数组定义并且长度为5
var arr2=new Array(5,6,7);定义一个数组,元素为5,6,7
二、函数
函数:一个功能的封装体
定义功能需要两个明确:1)功能的结果 。2)功能实现中参与运算的未知的内容
格式:通过指定的关键字来定义。
function 函数名 (参数列表)
函数体;
return 返回值;//若没有具体的返回值,return省略
}
函数也是调用才能使用
直接在body内写调用就行

<script type="text/jscript">
     function demo(){
         alert("demo run");
     }
     demo();//调用
     function add(a,b)//不用写变量var
     {
         return a+b;
     }

       var  c=add(2,3);
     alert("c="+c); 
</script>

细节①:只要使用函数的名称,就是对这个函数的调用,(没有重载形式)函数中有个数组在对函数的参数进行存储,这个数组就是argument
注意也不允许重名, 如参数列表x和for中自定义的参数

function show(x,y)
     {

        // alert(arguments.length);
         for(var a=0;a<arguments.length;a++)
         {
             document.write(arguments[a]);
         }
        // alert(x+":"+y);
     }
     show(3,2,5,1);//建议函数中定义几个参数,就传递几个实参

细节②函数名的含义

function getSum()
     {
         return 100;

     }
     var sum=getSum;//若写getSum(),则为函数调用
     alert("sum="+sum);

这里写图片描述

这里写图片描述
js是基于对象的,所以函数也是对象,即函数对象(堆),函数名在栈中,函数名其中是个地址,指向了函数对象。在var sum=getSum;中,getSum的地址赋给了sum,sum就也指向了这个对象,然后alert输出的是字符串,此对象的字符串就是函数。
在Java中:
demo d=new demo();
System.out.println(d);//因为demo继承了Object类,所以打印会出现哈希码getClass().getName() + ‘@’ + Integer.toHexString(hashCode())
细节③:

function show_2()
    {
        alert("show2 run");
    }
alert(show_2());
//第一个弹出的是:show_2 run  第二个弹出的是:undefined 
因为函数没有返回值

三、动态函数:使用的是js中内置的一个对象Function
var function_name = new Function(arg1, arg2, …, argN, function_body)
在上面的形式中,每个 arg 都是一个参数,最后一个参数是函数主体(要执行的代码)。这些参数必须是字符串。
动态体现在该对象写什么函数体就是什么对象。

var add=new Function("x,y","var sum;sum=x+y;return sum")
 var he=add(4,8);
 alert("he="+he);

四、匿名函数
没有名字的函数,通常是函数的简写形式,需要一个对象指向这个函数

var add2=function(a,b){
     return a+b;

 }
 alert(add2(7,8));
它是如下的简写形式:
function add3(a,b)
 {
     return a+b;
 }
 var i=add3(3,5);
 alert(i);
posted @ 2017-08-02 21:50  测试开发分享站  阅读(101)  评论(0编辑  收藏  举报