【问题标题】:Array is not a data type in Javascript?数组不是Javascript中的数据类型?
【发布时间】:2011-05-08 02:08:44
【问题描述】:

根据 Professional Javascript for Web developers 数组不是 Javascript 中的数据类型:

❑   “undefined” if the value is undefined 
❑   “boolean” if the value is a Boolean 
❑   “string” if the value is a string 
❑   “number” if the value is a number
❑   “object” if the value is an object or null 
❑   “function” if the value is a function

对吗?

【问题讨论】:

    标签: javascript arrays types


    【解决方案1】:

    这是正确的,Array 只是object 的后代。请注意,尽管它确实覆盖了一些东西,例如数组中的.toString() 将其成员打印在逗号列表中,而不是像普通对象那样使用"[Object object]"

    【讨论】:

    • 但是数字、布尔值和字符串不也是对象吗?
    • @weng - 你是在问哪些全局对象类型有构造函数,还是......?在这种情况下,它将包括您上面的列表 Array、Date、RegExp 和 Error,它们都是在 ECMAScript 中定义的类型,如果这是问题...我对您在这里所追求的有点困惑。
    • 他们没有将他们的类型报告为 Object,没有。
    • @weng:数字、布尔值和字符串是基元,而不是对象。但是,每个(NumberBooleanString)都存在相应的对象,并且它们确实具有“对象”类型。例如:typeof 2 返回“数字”,而typeof new Number(2) 返回“对象”。
    【解决方案2】:

    我相信这是因为“数组”是一个“对象”

    http://jsfiddle.net/z5Gv2/

    【讨论】:

    • 我想你可以使用if(foo instanceof Array){...}来检查它是否是一个。
    【解决方案3】:

    正如其他人所说,它被视为“对象”。您可以通过检查其构造函数是否 === 来测试对象是否为数组。

    【讨论】:

      【解决方案4】:

      数组不是 Javascript 中的数据类型,因为在底层它们是具有键:值对的对象。其中键是索引,值是数组内容。例如

      let example = ["a","b","c","d","e"]
      

      与对象表示相同

      let example = {
      0: "a",
      1: "b",
      2: "c",
      3: "d",
      4: "e"
      };
      

      【讨论】:

        【解决方案5】:

        是的,数组不是 JavaScript 中的数据类型。 JavaScript 中的类型集是原始值和对象。

        所以数组属于对象的范畴。

        【讨论】:

        • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-29
        • 2021-03-14
        • 1970-01-01
        • 2021-08-09
        • 2013-01-19
        相关资源
        最近更新 更多