在程序语言中数组的重要性不言而喻,JavaScript中数组也是最常使用的对象之一,数组是值的有序集合,由于弱类型的原因,JavaScript中数组十分灵活、强大,不像是Java等强类型高级语言数组只能存放同一类型或其子类型元素,JavaScript在同一个数组中可以存放多种类型的元素,而且是长度也是可以动态调整的,可以随着数据增加或减少自动对数组长度做更改。
今天,复习了一下JavaScript的数组,然后,把他的一些奇葩行为总结了一下,在这里和大家share一下,如果有不对的地方,欢迎指出!
奇葩1:Array()构造器函数可以不使用new关键字进行调用:
Array()构造器使用传递给他的参数作为数组的元素,从而创建数组,一般的,我们是如下调用的:
var a = new Array(1, 2, "bom!"); a.length; //3 console.log(a); //[1, 2, "bom!"]
但是,省略掉new也是可以的,如下:
var a = Array(1, 2, "bom!"); a.length; //3 console.log(a); //[1, 2, "bom!"]
虽然,我不知道他的内部实现机制是什么,但是,猜想他的构造器函数可能是如下定义的:
function Array(args) { //如果,this不是Array的实例的话, //说明不是通过new调用的,则在这里再重新调用 if( !this instanceof Array) { return new Array(args); }//后面是正常调用时的实现代码
//...
}
奇葩2:当只传一个参数给构造函数时,行为莫测
如果只传一个参数,并且这个参数是一个整数,将会得到一个数组,并且length等于这个参数
var a = new Array(12); console.log(a.length); //12 console.log(a); //[]
如果只传一个浮点数,就会报错:
var a = new Array(1.1); //Uncaught RangeError: Invalid array length(…)
传递一个字符串就会正常工作,并且该字符串作为数组的第一个元素:
var a = new Array("1.1"); console.log(a.length); // console.log(a); //["1.1"]
但是为了避免二义性,我建议最好是是直接使用字面量的形式创建数组:
var a = []; //空数组 var a = [1, 1, "bom"]; //三个元素 var a = [12]; //一个元素,并且元素是12
奇葩3:数组的length属性可以被修改(可写)
如下,我们直接把本来是2的length改成了100,而且还修改成功了!!!
var a = [1, 2, 3, 4]; console.log(a.length); //4 a.length = 100; console.log(a.length); //100
虽然length等于100,但是,元素a[4]-a[99]是不存在的,并且如果你请求他们的值的话,例如,从0到a.length做一个循环中做的话,那么会得到undefined。
接下来再看:
var a = [1, 2, 3, 4]; a.length = 100; console.log(a[10]); //undefined console.log(99 in a); //false
与下面的例子有点相似:
var a = [1, 2, 3, 4]; a[99] = undefined; console.log(a.length); //100
不同之处在于,这里的a[99]存在了,因为我们创建了它,即使他拥有的是undefined的值。但是从a[4]到a[98]的所有元素则是不存在的,如下:
var a = [1, 2, 3, 4]; a[99] = undefined; console.log(99 in a); //true; console.log(98 in a); //false console.log(a.length); //100
以上所述给大家分享了JavaScript数组的一些奇葩行为,文章写的不好还请见谅,谢谢!
js数组,奇葩行为
P70系列延期,华为新旗舰将在下月发布
3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。
而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?
根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。
更新动态
- 刘德华《劲歌集》24K金碟港版[WAV+CUE][1.2G]
- Faker五冠王什么意思 世界赛五冠王Faker选手介绍
- faker塞拉斯s14决赛什么出装 faker塞拉斯s14决赛出装介绍
- LOLtoc9魔法口令在哪可以找到 2024云顶之弈toc观赛魔法口令兑换码
- 黑鸭子2008《影视经典·珍藏版》试音碟[WAV+CUE]
- 碧娜《温柔吻语2》[WAV+CUE]
- Stravinsky-Symphonies,Volume1-OrquestaSinfonicadeGalicia,DimaSlobodeniouk(2024)[24-
- 外媒评Switch2:向下兼容是关键 但挑战依然存在
- 任天堂提醒:宠物的尿或唾液或会让NS故障 把它放好!
- 《博德3》再创新高 Steam掌机总游玩时长近2000年
- 张玮伽《想你的夜DSD》东升 [WAV+CUE][1G]
- 姚璎格《 粤 24KGOLD》正版低速原抓[WAV+CUE][1G]
- 杨千嬅《如果大家都拥有海》寰亚 [WAV+CUE][998M]
- 孟庭苇.1994-1990-1994钻石精选集2CD(2022环球XRCD限量版)【上华】【WAV+CUE】
- 群星.1998-华纳好情歌精选17首【华纳】【WAV+CUE】