首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么typeof Array返回"function“,而typeof [array variable]返回"Object"?

基础概念

在JavaScript中,typeof操作符用于检测变量的数据类型。typeof Array返回"function"是因为Array是一个构造函数,用于创建数组对象。而typeof [array variable]返回"object"是因为数组在JavaScript中是一种特殊的对象。

原因分析

  1. typeof Array返回"function"
    • Array是一个内置的构造函数,用于创建数组对象。在JavaScript中,函数也是对象的一种,因此typeof Array返回"function"
  • typeof [array variable]返回"object"
    • 数组在JavaScript中是一种特殊的对象,它们继承自Object.prototype。尽管数组有一些特殊的属性和方法(如lengthpushpop等),但它们仍然是对象的一种。因此,typeof [array variable]返回"object"

示例代码

代码语言:txt
复制
console.log(typeof Array); // 输出: "function"
let myArray = [1, 2, 3];
console.log(typeof myArray); // 输出: "object"

参考链接

总结

  • typeof Array返回"function"是因为Array是一个构造函数。
  • typeof [array variable]返回"object"是因为数组在JavaScript中是一种特殊的对象。

通过理解这些基础概念,可以更好地掌握JavaScript中数据类型的检测和数组的特性。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

为什么 useState 返回的是 array 不是 object

,那么为什么返回数组不是返回对象呢?...为什么返回数组不是返回对象 要弄懂这个问题要先明白 ES6 的解构赋值,来看 2 个简单的例子: 数组的解构赋值 const foo = [1, 2, 3]; const [one, two, three...,那么使用者可以对数组中的元素命名,代码看起来也比较干净 如果 useState 返回的是对象,在解构对象的时候必须要和 useState 内部实现返回的对象同名,想要使用多次的话,必须得设置别名才能使用返回值...array 不是 object 的原因就是为了降低使用的复杂度,返回数组的话可以直接根据顺序解构,返回对象的话要想使用多次就得定义别名了 首发自:为什么 useState 返回的是 array...不是 object

2.2K20
  • 【JavaScript】JavaScript 变量 ⑧ ( 获取变量数据类型 | 使用 typeof 运算符 获取变量数据类型 | 判断 空类型 | 判断 数组类型 | 获取 对象 具体类型 )

    一、获取变量数据类型 1、使用 typeof 运算符 获取变量数据类型 在 JavaScript 中 , 使用 typeof 运算符 可以 获取一个变量的 数据类型 , typeof 表达式 返回的是一个...nullVar); // 输出 "object" let funcVar = function() {}; console.log(typeof funcVar);...运算符 获取 null 值的类型 , 会返回类型为 object , 这是一个JavaScript的历史错误 ; 要检测一个变量是否为 null , 直接 使用 variable === null 进行判断... 展示效果 : 3、判断 数组类型 对于 数组类型 变量 , 使用 typeof 运算符 获取 数组变量 的类型 , 会返回类型名称为 object ;...console.log(typeof arrVar); // 输出 object console.log(Array.isArray(arrVar)); // 输出 true

    19610

    【javascriptPHP】当一个JavaScripter初次进入PHP的世界,他将看到这样的风景

    如你所见,当你试图这样做的时候,它只会返回0 当你改成: <?php var_dump( '外婆的'.'彭湖湾'); ?> ?...(返回string) 思路2:检测变量是否属于给定类型,(返回boolean) 基于这一思路我来阐述JS和PHP的类型检测机制: 对JS: 思路1:typeof 变量 检测变量类型,能够检测所有JS基本类型...(除了null),也能检测出引用类型中的functionObject,缺陷:不能检测出Array和普通对象,而会把它们都检测为Object <script type="text/javascript"...从上面的例子可看出typeof的缺陷所在:不能检测出Array和普通对象,而会把它们都检测为Object; 【吐槽】:正所谓学而不思则罔,就在复习这个知识点的时候,我发现了一个极其有趣的现象!...(更暖更贴心) • echo: 让我们来看看为什么我说它是个坑: 打印Array时报类型转换的警告,但仍能打印类型: <?

    1.7K100

    JavaScript数据类型检测的四种方式

    ');// 'string' console.log(typeof []);// 'object' console.log(typeof function(){});// 'function' console.log...' 注意: typeof返回值是字符串 其中数组,对象,null都会被判断为’object’ instanceof instanceof可以正确判断对象的类型,其内部运行机制是判断在原型链中能否找到该类型的原型...(obj)的结果不一样,这是为什么?...这是因为toString是Object的原型方法,Arrayfunction等类型作为Object的实例,都重写了toString方法。...不同的对象类型调用toString()方法时,根据原型链的知识,调用的对应的重写之后的toString方法(function类型返回内容为函数体的字符串,Array类型返回元素组成的字符串…),不会去调用

    21920

    javascript 中的 delete

    当进入全局代码执行上下文,全局对象(Global object,如浏览器中的 window)被当做其 Variable object 对象.这正是为什么在全局范围内声明的变量或函数会成为全局对象的属性的原因...这也是为什么不能被删除的原因. */ function bar(){} delete bar; // false typeof bar; // "function" /*...这是为什么可以被删除的原因. */ GLOBAL_OBJECT.baz = 'blah'; delete GLOBAL_OBJECT.baz; // true typeof GLOBAL_OBJECT.baz...当进入全局代码执行上下文,全局对象(Global object,如浏览器中的 window)被当做其 Variable object 对象.这正是为什么在全局范围内声明的变量或函数会成为全局对象的属性的原因...这是为什么可以被删除的原因. */ GLOBAL_OBJECT.baz = 'blah';   delete GLOBAL_OBJECT.baz; // true typeof GLOBAL_OBJECT.baz

    3K80
    领券