我正在学习 JavaScript,遇到了以下问题:
如果我执行以下代码:
它会抱怨对象长度未定义,但是
作品
有人知道为什么吗?
谢谢
如果我执行以下代码:
let object = {};
object.length
它会抱怨对象长度未定义,但是
let object = [];
object.length
作品
有人知道为什么吗?
谢谢
let object = {};
object.length
let object = [];
object.length
var str = 'Some String';
str.length // 11
{}
是创建空对象的简写。你可以将其视为其他对象类型的基础。Object
提供了原型链中的最后一个链接,可被所有其他对象使用,例如 Array
。
[]
是创建空数组的简写。虽然它也是类似于对象的数据结构(事实上,如前所述,Object
在其原型链中),但它是一种存储值序列的特殊对象形式。
typeof [] // "object"
length
。这个值会被某些方法自动更新,同时也被其他方法使用。var arr = [];
arr.hasOwnProperty('length'); // true
arr.length; // 0
var arr = [];
arr.foo = 'hello';
arr // []
arr.foo // "hello"
arr.length // 0
Object
。它没有像序列值一样期望一个length
属性。因此,当您尝试访问length
时,返回的值是undefined
,这与任何未知属性相同。var obj = {};
obj.hasOwnProperty('length'); // false
obj.length; // undefined
obj.foo; // undefined
基本上,数组是一种特殊的数据结构,它期望一系列的数据。因此,会自动添加一个表示数据结构长度的属性。
BONUS:您可以使用length
来修剪数组:
var a = [1,2,3,4,5];
a.length; // 5
a.length = 2;
a; // [1, 2]
a.length; // 2
[]
是一个数组对象,长度为0,因为没有元素。 {}
是一个对象,没有属性length
。 数组对象确实有一个名为length
的属性,这就是为什么调用[].length
时会看到元素的数量。Object.keys(object).length
。 - JacobObject.keys()
枚举。 - Dan[]
在JavaScript中表示数组,因此它具有长度。而{}
则是声明一个对象。
java
!== javascript
. - fuyushimoya
Object.keys(object).length
。 - Simon H