下一题的内容是JavaScript数组,比赛双方需要说出自己对于数组的理解,最后由掌尊林元青来判断谁可以胜出。听到这个题目,叶小凡差点笑出声了,关于数组,自己都不知道和叶老那个老怪“交流”多少回了。虽然不知道自己对于数组的掌握有多深,但是叶小凡依然有着十足的信心。于是,就在对面还在冥思苦想的时候,叶小凡已经滔滔不绝地讲述了起来。

“在JavaScript中,数组是一个非常灵活的类型。简单来说,数组就是一个容器,可以存放一个或者多个对象。当然了,这些对象的类型是没有限制的,不管它是什么,数组都可以存放。”叶小凡非常淡定地说道,中间没有丝毫停顿,好像这些话早已经融入自己的灵魂深处一样。

“喝!说得好像你很懂似的,姓叶的,你倒是先说说,数组该怎么创建吧!”对面弟子不屑一顾地说道,对于数组,他虽然不敢说非常精通,但是多少有点了解。更关键的是,自己可是比叶小凡早入门许久,当然不认为自己会比叶小凡这个新人差。他已经准备好了,计划随时打断叶小凡的讲述。

“数组有四种定义方式。”叶小凡随机讲到。

“什么,四种?笑死人了,我倒还是第一次听说,数组不就是一对中括号就定义了吗,哪来的四种?”对面弟子不屑一顾地笑了笑。
“你说的是用直接量定义数组。”叶小凡继续说道,“所谓直接量定义,就是用一对中括号来声明一个数组对象,就像这样:”

var arr = ["first", "second", "third"];
console.log(arr);

“得到的结果,就是生成了一个拥有三个元素的数组对象,对象的名字是arr。这种方法的好处是在定义数组的时候,就直接给这个数组做了初始化。除了这种方法,还有其他三种方法,我先来说第二种。”说着,叶小凡就打出一段代码流:

var a = new Array();

“这是采用构造函数的方式创建一个数组对象,在JavaScript中,每一个类型其实都有一个函数作为支撑,数组也不例外。在这个例子中,Array也叫作构造函数。和这第二种方法类似的,还有两种方法,也是采用构造函数的方法来创建一个数组对象的。”

var b = new Array(8);
var c = new Array("first", "second", "third");

“这三种方式有着各自的区别,第一种是直接用构造函数创建一个空的数组,也就是说,这个数组里面什么都没有。数组天生就拥有一个length属性,我可以让这个a变量调用自身的length属性来验证这一点。”

var a = new Array();
console.log(a.length);

代码运行,众人看得清清楚楚,结果是一个“0”。
“相信各位也看到了,这段代码的结果是一个0,这表示当前的数组对象里面啥也没有。接下来看第二种方式。”

var b = new Array(8);

“这种方式和刚才那种有所不同,不同点就在于,它虽然也是创建一个数组,但是却在创建的同时,设置了一个初始的长度,大家看,Array是一个函数,new关键字表示在创建这个函数所表示的对象,因为是函数,所以自然是可以打括号的。没错,函数可以打括号,打括号的意思就是要去执行这个函数的函数体。函数是有参数的,这个8就是参数。在这个例子中,8就表示给数组对象添加一个初始化的长度,我依然可以用数组的length属性来验证这一点。”说着,叶小凡继续打出代码:

var b = new Array(8);
console.log(b.length);

代码运行,众人看得清清楚楚,结果是一个“8”。
“相信各位也看到了,这段代码的结果是一个8,这表示当前的数组对象里面已经有8个元素了。那么问题来了,我并没有给这个数组添加任何东西,最起码,看起来没有。那么,这八个元素到底是什么呢?这个待会说,先看最后一种方式。”

var c = new Array("first", "second", "third");

“这一种方式在创建数组对象的同时,就给它赋予了初值。简单来说,就是创建数组的时候,就给它添加了三个元素。正因为如此,所以这个数组当前的length属性已经有值了,而且就是里面元素的个数:3!”

var c = new Array("first", "second", "third");
console.log(c.length);

代码运行,众人看得清清楚楚,结果是一个“3”。

“什么,叶小凡,你…竟然连函数都知道了!”对面弟子瞪大了眼睛,一脸的难以置信,要知道,在JavaScript初级阶段,函数可是一门了不起的法术了!虽然也有一些悟性好的弟子提前对函数有了一知半解,但是大部分初级弟子都是无法驾驭函数的。

“还是继续讲讲数组吧,刚才我一共说了创建数组的四种方式,第一种是用直接量来创建数组,剩下三种都是用构造函数来创建数组。怎么说呢,其实用起来的话,还是第一种方法最好用了,也是最简单的一种方式。”

“嗯,说得好,关于数组的创建,叶小凡说得算是比较通透了。”林元青也满意得点了点头。场外弟子又是一阵喧嚣。

“刚才你还说到数组的length属性,那是什么?”对面弟子收起了对叶小凡的轻视,皱着眉头问到。

“哦,你说的是length属性,数组只有一个长度属性,就是length,length表示的是数组所占内存空间的数目,而不仅仅是数组中元素的个数。比如说,我可以定义一个长度为8的数组,但是里面却只有一个元素。就好像刚刚的代码。”

var b = new Array(8);

“变量b指向一个数组,这个数组所占内存空间为8个单位,也就是说,有8个位置可以让这个数组存放别的元素。虽然我现在还没有给这个数组添加任何的元素,但是不代表这个数组没有长度,而这个长度就是数组的length属性。”
“那这个数组内部到底有什么?”
“这个数组内部就是8个空元素,没有东西,但是占据了内存。”说着,叶小凡打出一段代码来验证。

var b = new Array(8);
console.log(b);

代码运行,众人看得清清楚楚,结果是[ <8 empty items> ]。

“原来如此。”对面弟子也佩服起叶小凡来。

“数组作为一个对象,就有着很多内置的方法,接下来就说说那些有趣的方法吧。”

JavaScript百炼成仙 1.15 天秀相关推荐

  1. JavaScript百炼成仙 后续章节

    因为本书已经出版了,后续章节我就不太好发出来啦,有喜欢的小伙伴可以去网上购买哦~~ 打开天猫,搜索 清华大学出版社官方旗舰店,搜索 JavaScript百炼成仙 即可~ 目录 第1章 . 掌握Java ...

  2. JavaScript百炼成仙读书笔记

    JavaScript百炼成仙 作者:剽悍一小兔 没事儿的时候多读书还是蛮好的,这本书给我的感觉就像是真的在看修仙人士不断修炼去打怪升级一样,以不一样的视角重新温习了一遍前端的知识,和以往所读的其他书籍 ...

  3. JavaScript百炼成仙 1.20 函数七重关之二 (作用域)

    "咳咳,那我接下来继续长话短说了.要回答之前的那个问题,我必须把作用域的概念再说一说.这便是我所总结的函数七重关里面的第二重关."叶小凡继续讲解,这些概念自己在叶老的教导下早就已经 ...

  4. javascript百炼成仙 第一章 掌握JavaScript基础1.6 叶老

    这一日,叶小凡来到青山院附近的小山上修炼,忽然,被一块石头绊了一跤.正在他自认倒霉打算爬起来的时候,在石头缝里边发现了一枚古怪的戒指.戒指通体呈现一种枯黄色,似有一些年代悠久之感. "摔了一 ...

  5. javascript百炼成仙 第一章 掌握JavaScript基础01 初入宗门

    前些天发现了一个巨牛的人工智能学习博客,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转 乐阳村,处于脚本大陆东部的边缘地带,民风淳朴,村民日出而作,日落而息.这一日清晨,所有村民来到村庄的门口,正 ...

  6. javascript百炼成仙 第一章 掌握JavaScript基础1.8 对象的取值

    "小娃娃,我现在问你,如果我事先不知道对象的某个属性叫什么,那又该怎么访问对象中对应这个属性的值呢?"叶老笑呵呵地问到. "什么什么,事先都不知道对象的属性名称,那怎么可 ...

  7. javascript百炼成仙 第一章 掌握JavaScript基础1.4数据类型

    修行还在继续,随着对要诀的深入,叶小凡明白,在编程世界,刚才的直接量都属于一种数据.和人有男女一样,数据也是有类型的. 在JavaScript中,数据可分为两类,分别为原生数据类型(primitive ...

  8. javascript百炼成仙 第一章 掌握JavaScript基础1.7 对象数据类型

    听到这句话,叶小凡一顿,动作停止了下来. 对象数据类型,这在JavaScript基础修炼要诀中只是提了一下,但是并没有细讲,这个对象数据类型一直以来都深深地勾起了叶小凡的好奇心. "小娃娃, ...

  9. javascript百炼成仙 第一章 掌握JavaScript基础1.5基础考核

    叶小凡兴奋,那种钻研了很久之后猛地豁然开朗,感觉实在是太爽了.乘着心情大好,叶小凡继续钻研"JavaScript基础修炼要诀",一晃半天时间过去了.叶小凡性格谨慎,也非常刻苦,有很 ...

最新文章

  1. php agi api,PHP agi 编写测试
  2. 扩展基于注解的spring缓存,使缓存有效期的设置支持方法级别-redis篇
  3. angularJS学习笔记一
  4. 需求工程阅读笔记01
  5. Java静态代理、动态代理与CGLib代理
  6. C++ 常用集合算法
  7. STM32学习之路-SysTick的应用(时间延迟)
  8. 前端开发神器 vscode 常用快捷键
  9. 【hackerrank】Week of Code 26
  10. 容器技术Docker K8s 27 容器服务ACK基础与进阶-监控管理
  11. 《编程珠玑》——读书笔记1
  12. 信息学奥赛一本通(C++版)在线评测系统 1967:【14NOIP普及组】螺旋矩阵
  13. Google 手機程式設計
  14. avr单片机c语言库,AVR单片机C语言编译器
  15. 第二次作业-时事点评
  16. Vue入门(Vue.js,库与框架,MVVM,BootCDN,Vue入门,数据双向绑定,vue事件,生命周期,钩子函数 )
  17. android系统添加内置APP(自带.so)
  18. 揭晓 2021 编程语言排行榜
  19. 上海市四金和税的算法
  20. mie散射理论方程_A. Mie米散射理论基础知识讲解

热门文章

  1. sku展示php,前端如何展示商品属性:SKU多维属性状态判断算法的应用
  2. 几十元维修Dreasourcelab的DSLogic Pro 逻辑分析仪?
  3. 使用EasyExcel将本地excel数据读取后导入mysql数据库中
  4. 动态规划之最优配对问题
  5. 阿里云王坚“骗”马云10个亿,被骂四年都忍了,最后还回4500亿
  6. Python - openpyxl Excel 操作示例与实践
  7. EasyNVS摄像机公网全终端无插件网页摄像机直播管理服务运行出现“请求服务不存在或已停止”...
  8. Docker学习三 Docker安装Mysql
  9. 用区块链解决电子证据司法存证
  10. 手机计算机怎么打出无限符号,Win7怎么用搜狗打无限符号|输入法打无限符号方法...