javascript数组索引的研究

javascript数组索引的研究
从这个角度看,原因还不完全,因为我不想谈论像数组方法这样的东西是如何使用的。因为这是一个看它。下面我要讲的是我认为很重要的,只关于数组对象本身。另外,因为我在javascript方面没有太多实践经验,所以可能有一些东西没有涉及,有些说是错误的,请发现问题,让学生感到自由。

首先,Javascript(JS)是数组定义,而不是定义。总之,下面两句话是创建一个空数组:
var arr = { };
VaR arr2 =新(阵列); / /写不出新的。
创建之后,您可以随时向数组中添加元素。数组的大小不是固定的,可以像{ 0 }=1那样随机添加。

然后重点元素添加到数组。首先,你应该知道,数组是一个对象,但对象是一个键值对的集合(类似于内部字典,地图java C # Python字典),对象具有属性,称为目标函数方法,访问对象的属性或方法,可以使用方括号或点的方式,使用方括号参考报价,点都只用于该属性的名称是一个有效的变量名可以使用,是物业不包含任何空格和连字符不能以数字开头,可以看看一个例子:
var;
person.age = 22;
person.sayhi =函数(){ console.log('嗨');};

person.age / / 22;
人{年龄} / / 22;

(人。打个招呼); / /嗨
(人{ 'sayhi}); / /嗨

这是物体,它看起来不是什么特别的东西(除了方括号),但是对象足够了,数组从后面开始。

如上所述,所有的数组都可以完成,也就是说,下面的代码可以正常运行(只有第一行和上面的不一样):
var;
person.age = 22;
person.sayhi =函数(){ console.log('嗨');};

person.age / / 22;
人{年龄} / / 22;

(人。打个招呼); / /嗨
(人{ 'sayhi}); / /嗨

因为数组是对象,这里不把字符串索引放在方括号里,通常讲数字索引上去,还没有开始说(马上说)数字索引。

不同于普通的对象,对象的数组元素是数字索引,或特殊键(前面的对象是键-值对),这是为那些在其他语言中我们看到的一样,如java,C #和其他语言。在JS,主要有一些特殊的要求,它可以是数字,也可以是一个字符串,可以转换成数字,数字的和合理的,需要在0到4294967295的范围内(2 ^ 32-1)整数(事实上,这个指数在词法分析字符串,JS把串成一个32位整数,然后32点整数转换为字符串,和字符串是否相同,那么这个指标值是有效的,否则它是一个普通的字符串键)。一个简单的例子:
a = { 1, 3, 5,7 };
console.log(一{ 0 }); / / 1
(一console.log { 0}); / / 1

一个{ 2} = 12;
console.log(一{ 2 }); / / 12

上面的代码可以在浏览器中运行,而注释是输出值。它似乎并没有从其他语言中看到我们的阵列非常不同。这一{ 2} = 12;因为'2'is转换成一个整数,然后转换成一个字符串或一个2,所以它是作为一个{ 2 }相同。但在其他语言中,我们使用数组来定义一个固定大小的数组,对吗它似乎不在这里,这里是数组的索引范围。为什么呢答案很简单,这里的数组是对象,在JS对象。这和其他语言(除了Python函数型),不同的,我没有研究,也说的很清楚,我的理解是,当C的阵列/ java语言的定义,是记忆分为一个固定大小的块区,有一个指针指向的内存的首地址,JS,它似乎不喜欢这。如前所述,数组是对象和键值结构。所以我认为js中的数组是以哈希方式存储的,元素之间的内存不一定是连续的,但是我还没有找到一个方法来查看js变量的内存地址,所以我不能确定它。

我们强调指数,并提到指数的范围。然而,有些学生可能已经尝试过,也就是说,{ 1 } = 2,或者{ 4294967296 } = 10;这个句子也没有问题。是的,这不是错误。这是正常的说法。当然,这不会有问题。但问题不是索引必须是0到4294967295的整数。是的,是的,也是对的。问题在哪里

两个Firefox控制台的截图
你发现什么问题了吗当我们使用正常的索引数组添加元素,印刷时,添加的元素将被打印出来,和非正常使用索引添加元素,没有打印数组添加元素,但是你可以看到数组对象的右侧,所有添加的元素很多。再看一张图片,这时间添加一些元素,并添加一个属性的数组(看看正确的对象数组元素的索引):
我不知道你是否找到了它。在右边,上面的几个是数字索引,打印数组可以打印,下面是属性,打印数组不打印属性!也就是说,一个{ 2 } = 2;这句话,这2个是关键属性,而不是特殊的数字索引键,2被迫当一个正整数,被认为是一个字符串,所以2和4294967296 and'name ',是数组中的一个重要属性!因此,负索引或超出范围的索引(属性的键)都是合法的,它们都是公共字符串键。

问题是,既然2是一种常见的属性的关键,可以说为什么A 2或A - 2'access - 2,和关键的价值将是错误的,而一个{ 2 }不报道。是的,为什么在对象面前说话时,有一个大胆的话:访问对象的属性或方法,可以使用方括号或圆点,它使用方括号参考报价,点只应用于属性名称是只有当一个有效的变量名,不包含任何空格,属性和连字符不能启动与一些。所以,这是关键属性2,无法接入点模式

另外还有一个小问题,是方括号,所以需要我们要访问数组的名称属性:一个{ 'name' },名字也援引包裹起来,和2是一个属性名相同的键,为什么不能2(也可以用结束引号)事实上,在括号中的所有字符可以被视为一个表达,一些简单的2,是一个合法的表达,但如果名字不是定义为一个变量名,名不是一个有效的表达,相同的X ^ BC是不合法的,因为它会被视为X,B,C变量组成的表达式,但X,B,C不是变量是不确定的,而符号是不支持js,所以一个{姓名}问题的名称,而不是在{ }。如果没有很好的理解,你能想到的名字,当x和x加y Y是未定义的变量,X + Y的表达一定有问题,对不对还有一个问题,对吗和X + Y{ }没有问题,because'x + y'is字符串。

稍后再加一点。在js中,变量的名称可以通过数字、字母和下划线任意组合,其中的数字不能放在开头。对象的属性键应命名为松散,合法不能使用引号,非法使用引号可以被包装起来。

好吧,那几乎是一样的。概述:首先简要介绍对象,然后数组也是对象。最后,对以下问题进行了解释和总结。

写这篇文章的原因是,我昨天看到一个JS在微博客的教程,有一个关于数组的解释的质疑,并评论数超过了140,所以我查了资料,写了它,目的是为了让你明白,还可以帮助学生学习js。数组的范围和指标转换参考说Javascript

最后,谢谢收看。因为它是两次写的,它可能有点乱,有些地方不凌乱,但上下文是完整的。有些上下文是完整的,但是有太多的废话。简言之,我们就这样做,下次见。
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部