数组的length

  数组一般情况下的length长度等于数组最后一项加1,但遇到这样的情况:
var aTest = [“1”, “2”, “3”];
alert(aTest.length);    //3
aTest[25] = “4”;
alert(aTest.length);    //26
  长度变为26了。并且从位置4到位置25的值都是undefined,表示定义了,但没有初始化。
  此时又引出null和undefined的区别:
undefined总结:1表示定义了变量,但未初始化变量;2.undefined从null派生而来,因此undefined == null;3未定义明确返回值(即没有return语句;或者仅仅只有“return”,没有具体返回值)的函数,实际返回undefined。4.typeof不区分未声明过的变量和声明过,但未初始化的变量,因此对这两种变量typeof时,都会返回undefined。
null总结:1表示未声明的变量,不存在的对象;2是对象占位符。但对于:
alert(sTest == null);
  此时的sTest是未声明的变量,执行此alert语句会报错(提示信息:“sTest未定义“),原因在于只有typeof能对未声明的变量操作,其它操作符都只能对声明的变量进行操作。
  此时又引出ECMAScript的原始类型和引用类型:原始类型只有5种(即String,Number,Boolean,Undefined,Null),且String,Number,Boolean原始类型有对应的引用类型。
  再引出typeof问题:typeof何时返回原始类型的各个对应值,何时返回引用类型值对应值?如:对于1,则返回“number”,因为1是原始类型Number;对于new Number(),则返回object,因为它是引用类型了。其它原始类型依次类推。
instanceof右侧只能是引用类型。null值,undefined值不属于Object引用类型,它们是相应的原始类型的值,因此返回值是false。
  对于数组的变量取值写法,如:aTest[“name1”] = “1”,此时长度又是多少?
var aTest = [“1”, “2”, “3”];
alert(aTest.length);    //3
aTest[“name1”] = “value1”;
alert(aTest.length);    //3
alert(aTest[“name1”]);    //value1
alert(aTest.name1);    //value1
  长度没有变化,并且根据下面两个alert语句的结果得出结论:name1的增加只是相当于给数组增加了一个名字是“name1”的属性,并不是数组索引项里面的内容。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值