首页 > 试题广场 >

以下代码执行后的输出是?

[单选题]
以下代码执行后的输出是?
var arr = [];
arr[0] = 0;
arr[1] = 1;
arr.foo = 'c';
console.log(arr.length);


  • 报错
  • 3
  • 2
  • undefined
推荐
thee同学说的对:本身数组就是对象
这里要理解所谓‘数组’其实是array类型对象的一个特殊作用,就是:我们可以对它进行一种模式的数据存储,但除此之外,它依然是一个对象
  • var arr = [‘1’,‘2’] //这本质上是一系列操作:得到一个数组对象;调用了它的数组方法存入了一些数据,arr.length根据存入数据的数目被修改
  • arr.length,对arr对象的length属性进行一个访问
  • arr.foo = 'hello' 对arr对象创建一个属性,所以.foo 跟.length地位是并列的:就是arr的一个属性,同时arr的数组方法跟这些属性是毫不相关的
编辑于 2017-03-17 23:15:39 回复(12)
1.数组也是对象;2.对象不能用length返回其拥有的属性数量
发表于 2016-12-22 14:45:04 回复(0)
在JS概念里,万物皆对象,所以数组不仅仅是数组本身,同时还是对象。length是数组本身独有的属性,对象没有该属性,当按照数组添加成员的方式添加成员时,数组本身会更新length,而以对象添加属性的方式添加成员时,不会触发关于数组的更新,而仅仅是把arr当做一个普通的对象操作!
发表于 2019-07-04 21:03:26 回复(0)
数组本身也是对象,arr.foo只是为数组添加了foo属性,而数组的length属性不是计算数组属性的长度,而是计算arr的索引数组中下标最大的值+1
发表于 2019-10-28 10:02:40 回复(0)
也不知道我这样子理解对不对,当时做的时候是觉得只是把foo作为他的一个属性然后赋值了,所以认为长度只要2
发表于 2016-12-21 00:55:05 回复(0)
‘数组’ 其实是array类型对象的一个特殊作用,我们可以对它进行一种模式的数据存储,但除此之外,它依然是一个对象.
arr.length,也就是对arr对象的length属性进行一个访问
arr.foo = 'c';这里是把arr视为对象,foo相当于它的一个属性
执行后arr仍然是["a", "b"]

数据不支持arr.foo赋值
可以使用
arr[2] = 'c'



发表于 2017-03-26 16:44:50 回复(0)
arr是一个数组,本身也是一个对象,所以也拥有对象的length属性,var arr=[0,1],所以arr.length=2,.foo只是它的一个方法
发表于 2017-12-11 15:05:35 回复(2)
数组也是对象,给数组添加的foo属性方法是和内置的length方法并列的。
发表于 2017-08-10 22:47:54 回复(0)
arr.foo只是给arr这个数组对象添加了一个属性
foo属性和length属性是平级的
发表于 2019-03-14 16:29:01 回复(0)
数组也是对象,可以使用对象的方式为数组添加属性,但是不会修改数组的长度,如果使用中括号的形式则触发数组长度变化
发表于 2022-05-03 09:31:31 回复(0)
arr.foo = 'c' ,对arr对象创建一个属性,而不是为arr存数据
发表于 2019-02-21 14:44:27 回复(0)
arr是一个数组,本身也是一个对象,所以也拥有对象的length属性,var arr=[0,1],所以arr.length=2,.foo只是它的一个属性
发表于 2021-07-29 00:16:10 回复(0)
原来如此,数组本身就是对象,arr.c之后只是为这个对象增加了一个自定义的属性,并不会影响到length属性的值
发表于 2018-09-22 01:26:34 回复(2)

arr实质是个对象。arr.abc只是给对象加了个属性

发表于 2018-09-20 19:35:46 回复(0)
下标赋值 length为2 foo为方法值为“c”
编辑于 2016-11-28 15:49:47 回复(0)
数组本身就是对象。arr.foo就是定义arr这个对象的一个属性。
发表于 2021-03-11 08:42:03 回复(0)
所以arr.foo实际是给数组里添加了个对象?
发表于 2023-04-03 15:21:50 回复(0)
arr.foo中的foo是属性,并不能算在数组长度里面。
数组里面只有0,1
arr = [];js里面空数组也可以直接赋值arr[0] = 1;
发表于 2022-10-15 16:29:09 回复(0)
这里要理解所谓‘数组’其实是array类型对象的一个特殊作用,就是:我们可以对它进行一种模式的数据存储,但除此之外,它依然是一个对象
  • var arr = [‘1’,‘2’] //这本质上是一系列操作:得到一个数组对象;调用了它的数组方法存入了一些数据,arr.length根据存入数据的数目被修改
  • arr.length,对arr对象的length属性进行一个访问
  • arr.foo = 'hello' 对arr对象创建一个属性,所以.foo 跟.length地位是并列的:就是arr的一个属性,同时arr的数组方法跟这些属性是毫不相关的
发表于 2022-07-18 13:36:47 回复(0)
运行了一下结果是3
发表于 2021-10-28 19:57:11 回复(0)
arr = [0,1,foo:'c']
发表于 2021-09-25 12:16:11 回复(0)