• JS中的 length, var i = [1,2]; i[length], 与 i.length, i["length"]的区别


    (写了好久)版权所有: 转载请 说明 出自 ruoyuting的博客园  http://www.cnblogs.com/ruoyuting/

    今天在看视频的时候,看到JS的数组与对象,以前一直模模糊糊,不清楚,现在趁着下午有时间,好好的弄清楚了

     懒得FQ,现在还是一个英语渣  ,所以,国内  http://www.w3school.com.cn 是这么解释的

    首先:JS中的length,我们知道  定义 一个 数组,或者对象  length是常使用的,获得其长度的方法,无论是js,java, php 都是如此

    但是在JS中 单独  alert(length);  打印出的就是:0

    alert(typeof length); 打印:number  

    说明  length  在js中没有被任何数组,对象 调用的时候,就是代表一个数字 0 

    所以接下的问题好解释了  

    定义一个  数组  var box = ["?",2,3,"?",2,3,"?",2,3,"?",2,3];
    alert(box[length]); //打印:?

    alert(typeof box[length]); //打印:string

    定义一个  数组  var box = [1,2,3,"?",2,3,"?",2,3,"?",2,3];
    alert(box[length]); //打印:1

    alert(typeof box[length]); //打印:number

    打印的都是 数组中 索引是0 的 元素的值,和元素的类型

    重点:

    length是一个数字 0 ,

    var i = [1,2];  i[length]是 i 数组里的 索引为0 的元素

    然后是i.length,我们知道 是i 数组中的长度,或者说元素个数。

     i["length"] 是数组中,下标(我读书的时候学的java,老师习惯了这么叫)、索引是length的元素(一般数字的下标,或者索引都是数字,但是在js中,数组也是对象类型,在数组中,i["length"]  = "一个字符串", alert( i["length"] )  打印出 “一个字符串” ,也是可以的,这时  length 是 它的键,一个字符串” 是它的值,键值对,键值对,就是这样来的,注意:

     var box = ["?",2,3];
    box["length"] = "数字";

    这么写是会报错的,会在控制台打印出  Uncaught RangeError: Invalid array length 

    Uncaught Range Error: Invalid array length 

    翻译(百度翻译):捕获的范围错误:无效的数组的长度

      有道翻译:未捕获范围错误:无效的数组长度

    所以:

    1.length 是一个数字 0  

    2.var i = [1,2];  i[length] 是 i[0] , 数组中下标为0的元素

    3.var i = [1,2];  i.length  是 i 数组的长度

    4.i["length"] 是 i 数组中 键为 length 的元素 

    回去试试,下面这段代码:

    基础:

    var box = ["?",2,3];
    box[length] = "数字";
    box["length"] = "数字";//demo.js:122 Uncaught RangeError: Invalid array length
    alert(box);

    进阶:(代码要自己试试才看的懂)

    var box = [1,2,3];
    alert(box[length]); //打印:1
    alert(typeof box[length]); //打印:number
    // alert(typeof box[num]); // 报错:Uncaught ReferenceError: num is not defined
    box[length] = "数字";
    alert(box.length);//3
    alert(box);

    var box = ["?",2,3];
    alert(box[length]); //打印:?
    alert(typeof box[length]); //打印:string
    // alert(typeof box[num]); // 报错:Uncaught ReferenceError: num is not defined
    box[length] = "数字";
    alert(box.length);//打印:3
    alert(box);//打印:数字,2,3

    //打印: 3 数字,2,3
    alert(box[length]);//可能是把box的索引0的内容打印出来了 box[length] 这个length是数组长度吗?

    alert(length); //打印:0
    alert(typeof length); //打印:number

    var box = ["?",2,3,"?",2,3,"?",2,3,"?",2,3];
    alert(box[length]); //打印:?
    alert(typeof box[length]); //打印:string

    var box = [1,2,3,"?",2,3,"?",2,3,"?",2,3];
    alert(box[length]); //打印:1
    alert(typeof box[length]); //打印:number

    // alert(typeof box[num]); // 报错:Uncaught ReferenceError: num is not defined
    box[length] = "数字";
    alert(box.length);//打印:3
    alert(box);//打印:数字,2,3

    //可能是把box的索引0的内容打印出来了 box[length] 这个length是数组长度吗?不是
    alert(length); //打印:0 说明 length 没有被 对象. 的时候,就是 数字0

    (写了好久)版权所有: 转载请 说明 出自 ruoyuting的博客园  http://www.cnblogs.com/ruoyuting/

  • 相关阅读:
    C# 网络斗地主源码开源
    windows 10
    JAVA Eclipse Incorrect line ending found carriage return 怎么办
    JAVA Eclipse中如何简易的实现消息机制
    JAVA Eclipse中的Android程序如何使用线程
    JAVA Eclipse如何重新设置工作空间workspace
    JAVA Eclipse如何重命名包
    JAVA Eclipse如何修改Android程序名称
    JAVA Eclipse如何设置编程环境字体
    JAVA Eclipse如何设置点击按钮切换图片
  • 原文地址:https://www.cnblogs.com/ruoyuting/p/7895591.html
Copyright © 2020-2023  润新知