search

Home  >  Q&A  >  body text

JS数组好像跟JAVA不一样?

java数组放的都是同一个类型的数据,JS好像啥都能放是吗?我混乱了

看山看水看代码看山看水看代码2929 days ago1627

reply all(2)I'll reply

  • PHP中文网

    PHP中文网2016-12-17 13:45:27

    js的数组可以存放任意js类型。包括其他数组、对象或者函数的引用。关联数组与常规数组是有区别的,常规数组用数字下标,关联数组则用字符串作下标。由于js是非类型语言,故数组中的元素类型不必一致。
    数组声明: var arr= new Array();然后可以单独为每个元素赋值。也可以在声明时赋值: new Array(1,'ok',3,true,{x:1,y:4});
    js数组感觉就是java中数组与Arraylist的结合体。兼具两者优点。
    如果只向Array()构造函数传递一个参数,那么该参数是指定数组的长度。
    数组也有直接量,比如:
    var array = [1.2,'javascript',true,{x:1,y:2}];
    数组亦可嵌套:
    var  matrix=[[1,2,3],[4,5,6],[7,8,9]];  虽然js不支持多维数组,但是这么一嵌套,就成了多维数组。而且js中数组直接量 的元素不必仅限于常量,它可以是任意表达式:
    var base=3;
    var table=[base,base+1,base+2];
    甚至你可以在数组中存放未定义的元素,比如var unkown=[1,,5];     //2号元素就是未定义的
    这么宽松的语法正是js令人头痛之处啊。当然这也是js强大之处。

    ---------------------------------------------------------------------------------------------------------

    javascript里是关联数组,类似Java的Map

    几行代码演示一下:
    var data = new Array();
    data[0] = 'good';
    data["one"] = 1;
    console.log(data);
    输出:[ 'good', one: 1 ]


    数组总的来说没有多大的区别,无非就是在定义上有所区别罢了。不管是任何语言都是这样。JS是客户端弱语言,而JAVA则是处境后台底层的一门语言。

    reply
    1
  • 阿神

    阿神2016-12-17 13:29:44

    不一样,java中的数组声明时需要标明数据类型,和长度,一旦声明完成,,数组长度也确定了,除非进行扩容,否则放不下。JS中虽然声明中也确定了长度,但是存储达到长度最大值时也能够再放下,并不需要扩容操作,存放的数据类型也是没有限制的

    reply
    0
  • Cancelreply