数组是javascript中的一个重要组成部分,那么在javascript中数组的下标从几开始?下面本篇文章就来给大家介绍一下,希望对大家有所帮助。

javascript数组下标是从0开始的。

那么为什么数组的下标是从0开始,而不是从1开始呢?从1开始不是更符合人们的习惯么。

数组(Arrary)是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。

从数组存储的内存模型上来看,“下标”最确切的定义应该是“偏移(offset)”。如果用a来表示数组的首地址,a[0]就是偏移为0的位置,也就是首地址,a[k]就表示偏移k个type_size的位置,所以计算a[k]的内存地址只需要用公式:a[k]_address = base_address + k * type_size;

但,如果数组从1开始计数,那公式的k就要做相应的改变了:a[k]_address = base_address + (k - 1 ) * type_size;

对比两个公式,我们发现,如果从1开始编号,每次随机访问数组元素都多了一次减法运算,对于cpu来说,就是多了一次减法指令。

数组作为非常基础的数据结构,通过下标访问数组元素又是其非常基础的编程操作,效率的优化就要尽可能的做到极致。从0开始,可以减少一次减法操作,提升了CPU的效率。

HTML数组序号,javascript数组下标从几开始?相关推荐

  1. 【一篇搞定JS数组】JavaScript数组使用详解

    文章目录 JavaScript 数组 Array 1)概述/前言 2)创建数组 (一)Array()构造函数 (二)数组字面量表示法 (三)扩展操作符 (四)工厂方法--Array.of()和Arra ...

  2. JavaScript数组的push()等方法的使用

    数组是值得有序集合.每个值在数组中有一个位置,用数字表示,叫做索引.JavaScript数组是无类型的:数组元素可以是任何类型,而且同一个数组中可以存在不同类型元素,甚至可以是对象或是其他数组,这就可 ...

  3. jQuery数组对象转javascript数组

    当我们在前端开发中,使用了jQuery时,我们通常通过$(".box-item")的方式获取的是一个jQuery对象是一个类数组对象,当我们需要向后台传输的数据中,使用的是java ...

  4. 3种JavaScript 数组转换为字符串的方法

    英文 | https://javascript.plainenglish.io/how-to-convert-a-javascript-array-into-a-string-f066c8839a1d ...

  5. 数组与类数组以及在类数组对象使用数组的方法

    如何在类数组中使用数组的方法? 这里记点笔记,仅供学习参考. 文章目录 判定数组 1. Array.isArray( ) 2. instanceof 操作符 3. 检测类属性 数组 类数组 类数组对象 ...

  6. javascript数组中数字和非数字下标的区别

    考完试后闲来无事,想起好多天没写js了,于是打算实践一下最近看到的一些好玩的点子.结果写着写着,发现了一点有趣的小问题.出现问题的代码如下: 1 var array = []; 2 array[&qu ...

  7. Javascript 数组下标

    1.下面使用JavaScript数组下标,我们看示例吧. 为数组下标指定负值: var a = [];                 // 定义空数组直接量 a[-1] = 1;           ...

  8. JavaScript(二)—— JavaScript 运算符/JavaScript 流程控制/JavaScript 数组

    本篇为 JavaScript 系列笔记第二篇,将陆续更新 文章目录 一.运算符 1. 算术运算符 2. 递增和递减运算符 3. 比较运算符 4. 逻辑运算符 短路运算(逻辑中断) 5. 赋值运算符 6 ...

  9. javascript数组——新建数组、访问数组、遍历数组的方法、数组对象的方法、冒泡排序算法、json的正反序列化

    目录 数组 通过构造函数的三种方法 字面量创建数组方式 访问数组 遍历数组的方法 遍历:遍历就是把数组中的元素从头到尾都访问一次 操作数组对象的方法 删除和添加 delete与Vue.delete区别 ...

最新文章

  1. RRDTool 存储原理简介——基于时间序列的环型数据库
  2. linux查找文件命令 要查找包含某字符
  3. 深度剖析Service Mesh服务网格新生代Istio
  4. springMVC——SpringMVC原理详细解析
  5. mods文件夹怎么创建_TCL电视怎么安装蜜蜂视频通用教程
  6. CListControl的OnMouseMove和OnNcHitTest
  7. Npm常用命令有哪些
  8. UI设计干货模板|首页设计技巧
  9. html5 的属性和方法,Qunee for HTML5 - 中文 : 常用属性与方法
  10. js实现滑动拼图验证码
  11. 温度pid自整定算法c语言,程序温控仪中PID参数自整定算法-自动化仪表.PDF
  12. ModelState.IsValid一直为false的原因
  13. php实现邀请好友,新版php获取MSN好友列表,邀请MSN好友
  14. 《HarmonyOS开发 – OpenHarmony开发笔记(基于小型系统)》第1章 OpenHarmony与Pegasus物联网开发套件简介
  15. Maximo学习:创建表和应用程序
  16. 国外十几种国外撸美金项目适合小白们
  17. 成功上岸国科大研究生!
  18. windows重启mysql
  19. DDC EDID 介绍
  20. 软件产品发布基本流程

热门文章

  1. 【如何选到好策略做投资组合?】选股策略太多不知道用哪个?教你几行神奇代码来挑选
  2. HTML页面与浏览器自适应
  3. 程序设计C语言-静态链表及指针
  4. 计算机选做实验原理,实验一计算机组成原理
  5. oracle中更改表名语句,转:取Oracle 表名 字段名 注释等实用语句
  6. 学会认识并接受项目管理中的角色冲突 (转)
  7. 小黄的刷题之路(九)——码题集OJ赛-列表实现简单“合成2048”
  8. govendor的安装与实践
  9. 郑州清华计算机学校,世界第一!郑州11中2016届学子娄晨耀代表清华大学SC18夺冠...
  10. 关于freenas 安装frp 设置