Javascript 语法(四)

今天我们来说说JS的复杂数据类型。数组 、对象称为复杂类型,也称为引用类型。比如数组 函数 正则 时间函数 都属于对象类型,当然也属于复杂数据类型。

如何查看一个变量是何种数据类型呢?使用关键字 typeof 或者 instanceof .

在 JavaScript 中,判断一个变量的类型尝尝会用 typeof 运算符,在使用 typeof 运算符时采用引用类型存储值会出现一个问题,无论引用的是什么类型的对象,它都返回 “object”。这就需要用到instanceof来检测某个对象是不是另一个对象的实例。

typeof
instanceof.png

数组

创建数组的方式有两种方式 : 构造函数和字面量

构造函数
1.无参构造函数,创建一空数组
var a1 = new Array();

2.一个数字参数构造函数,指定数组长度(由于数组长度可以动态调整,作用并不大),创建指定长度的数组
var a2 = new Array(5);

3.带有初始化数据的构造函数,创建数组并初始化参数数据
var a3 = new Array(4, 'hello', new Date());

字面量
1.使用方括号,创建空数组,等同于调用无参构造函数
var a4 = [];

2.使用中括号,并传入初始化数据,等同于调用带有初始化数据的构造函数
var a5 = [10];

注意点
1.在使用构造函数创建数组时如果传入一个数字参数,则会创建一个长度为参数的数组,如果传入多个,则创建一个数组,参数作为初始化数据加到数组中
var a1 = new Array(5); console.log(a1.length);//5 console.log(a1); //[] ,数组是空的 var a2 = new Array(5,6); console.log(a2.length);//2 console.log(a2); //[5,6]

但是使用字面量方式,无论传入几个参数,都会把参数当作初始化内容
var a1 = [5];console.log(a1.length);//1console.log(a1); //[5]var a2 = [5,6];console.log(a2.length);//2console.log(a2); //[5,6]

2.使用带初始化参数的方式创建数组的时候,最好最后不要带多余的”,”,在不同的浏览器下对此处理方式不一样
var a1 = [1,2,3,];console.log(a1.length);console.log(a1);

这段脚本在现代浏览器上运行结果和我们设想一样,长度是3,但是在低版本IE下确实长度为4的数组,最后一条数据是undefined

有var关键字声明的变量和没有var关键字声明的变量有何区别?

var.png

如果不加var 关键字 , 其结果相当于window 对象的一个属性
window.b = 1。

栈方法和堆方法

push 向数组添加一个成员,放置数组的末尾,其它成员顺次移动。返回该数组的长度。

push.png

pop 将数组的最后一个成员 删除,其它成员顺次移动。返回删除该数组成员。

pop.png

unshift 向数组添加一个成员放置数组的第一位,其它成员顺次移动。返回该数组的长度。

unshift.png

shift 将数组的第一个成员 删除,其它成员顺次移动。返回删除的原数组成员。

shift.png

其它数组方法
split 将一个字符串转化为一个字符串数组。返回一个新的字符串数组,原字符串无变化。

split.png

Join(separator) 将数组中的成员放入一个字符串中,并返回该字符串。

join.png

splice 任意位置添加/删除数组中的成员,其它成员并顺次移动。对原数组进行操作。

splice.png

1 如果有两个参数,第一个参数表示起始的下标,第二个参数表示删除的个数。

arr.splice(0,1)
从数组的下标为0的开始,删除1个长度的成员。返回删除的数组成员。

2 如果有N个参数,第一个参数表示起始的下标,第二个设置为0(表示没有删除),上下的表示要添加的数组成员。

arr.splice(0,0,1)
从数组的下标为0的开始,添加1个长度的成员。返回数组的长度。

slice 将原数组中一部分浅复制存入一个新的数组对象中,并返回这个新的数组 ,对原始数组没有改变。

Slice.png

concact 将两个数组拼接到一起.返回一个新的数组。

concat.png

reverse 将数组中元素倒叙排列

reserve.png

sort 先要转换为字符串 用ASCII码 进行比较

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,591评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,448评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,823评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,204评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,228评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,190评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,078评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,923评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,334评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,550评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,727评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,428评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,022评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,672评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,826评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,734评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,619评论 2 354

推荐阅读更多精彩内容

  • 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单...
    舟渔行舟阅读 7,752评论 2 17
  • 数组 在程序语言中数组的重要性不言而喻,JavaScript中数组也是最常使用的对象之一,数组是值的有序集合,由于...
    南山码农阅读 196评论 0 0
  • Math Math对象时JavaScript的内置对象,提供一系列数学常数和数学方法。Math对象只提供了静态的属...
    匿名用户404阅读 340评论 0 0
  • 今天的猫叔小灶晨读讲的是成为领域高手的三大狠招,在我看来实际上可以总结成为一句话:想好就快去做,请坚持下去! 下...
    落语无声阅读 238评论 2 3
  • 这是一个最好的时代,也是一个最坏的时代。数据爆炸带来了大量信息,我们需要了解的更多,需要学习的更多,需要融入的更多...
    古月居阅读 236评论 0 0