JavaScript详解十 ——数据类型、正则

(一)、数据类型内存

1、简单类型与复杂类型

简单类型又叫做基本数据类型或者类型,复杂类型又叫做引用类型

值类型:简单数据类型/基本数据类型,在存储时变量中存储的时值本身,因此叫做值类型

string、number、boolean、undefined、null

注意:简单数据类型 null 返回的是一个空的对象object

如果有个变量我们以后打算存储为对象,暂时没想好放啥,就可以给null

引用类型:复杂数据类型,在存储时变量中存储的仅仅是地址(引用),因此叫做引用数据类型,通过new关键字创建的对象(系统对象、自定义对象),如Obect、Array、Date等

2、堆和栈

简单理解栈的存取方式

JavaScript详解十 ——数据类型、正则_第1张图片

JavaScript详解十 ——数据类型、正则_第2张图片

简单理解下堆

堆数据结构是一种树状结构。它的存取数据的方式,则与书架与书非常相似

堆栈空间分配区别:

栈(操作系统):简单数据类型存放在栈里面,里面直接开辟一个空间存放的是值

堆(操作系统):存储复杂类型(对象),一般由程序员分配释放,若程序员不释放,由垃圾回收机制回收。

复杂数据类型存放在堆里面,它是先是在栈里面存放地址,十六进制表示,然后这个地址指向堆里面的数据

总结:

1、JS中的变量都是保存到栈内存里的

2、基本数据类型的值直接在栈内存中存储,值与值之间是独立存在的,修改一个变量不会影响其他的变量

3、引用数据类型的值直接保存到堆内存中的,每创建一个新的对象,就会在堆内存中开辟一个新的空间,而变量保存的是对象内存地址(对象的引用),如果两个变量保存的是同一个对象引用,当一个通过一个变量修改属性时,另一个也会受到影响

4、比较两个基本属性类型的值时,就是比较值;

比较两个引用数据类型时,它是比较对象的内存地址,如果两个对象时一模一样的,但是地址不同,他也会返回false

JavaScript详解十 ——数据类型、正则_第3张图片

课堂小练习

1、画图掌握简单数据类型

2、画图掌握复杂数据类型

1、正则概念

正则表达式(规则表达式)

——用于定义一些字符串的规则,计算机可以根据正则表达式,来检查一个字符串是否符合规则,将字符串中符合规则的内容提取出来

2、创建正则

(1)、方式一:构造函数创建

var 变量=new RegExp("正则表达式","匹配模式");

参数一:规则

参数二:

i 忽略大小写

g 全局匹配模式

使用typeof检查正则对象,会返回object

(2)、方式二:字面量来创建

语法:var 变量=/正则表达式/匹配模式

正则test()方法:

使用这个方法可以用来检查一个字符串是否符合正则表达式的规则,如果符合返回true,否则返回false

3、正则语法

(1)、使用 | 表示 或者

(2)、[]里的内容也是或的关系 [ab]==a|b

[a-z] 任意小写字母

[A-Z] 任意大写字母

[A-z] 任意字母

[0-9] 任意数字

(3)、 [^] 除了 查找任何不在方括号之间的字符

(4)、量词

-通过量词可以设置一个内容出现的次数, 量词只对它前边的一个内容起作用

{n}正好出现n次

{m,n}出现m-n次

{m,}m次以上

+ 至少出现一次,相当于{1,}

* 0个或多个,相当于{0,}

? 0个或1个,相当于{0,1}

(5)、^、$

^ 表示开头

$ 表示结尾

如果在正则表达式中,同时使用^$,则要求字符串必须完全符合正则表达式

课堂小练习

1、创建一个正则表达式,用来检查一个字符串是否是一个合法手机号

(6)、. 表示任意字符

(7)、\ 转义字符

注意:使用构造函数时,由于它的参数是一个字符串,而\是字符串中转义字符, 如果要使用\则需要使用\\来代替

(8)、四组 \ 语法

\w -任意字母,数字,_

\W -除了字母、数字、_

\d -任意数字[0-9]

\D -除了数字[^(0-9)]

\s -空格

\S -除了空格

\b -单词边界

\B -除了单词边界

4、正则与字符串相关的方法

(1)、 split()

-可以将一个字符串拆分为一个数组

-方法中可以传递一个正则表达式作为参数,这样方法将会根据正则表达式去拆分字符串

-这个方法即使不指定全局匹配,也会全都拆分

(2)、search()

-可以搜索字符串中是否含有指定内容

-如果搜索到指定内容,则会返回第一次出现的索引,如果没有搜索到,返回-1

-它可以接受一个正则表达式作为参数,然后会根据正则表达式去检索字符串

-search()只会查找第一个,即使设置全局匹配也没用

(3)、 match()

-可以根据正则表达式,从一个字符串中将符合条件的内容提取出来

-默认情况下,我们的match只会找到第一个符合要求的内容,找到以后就停止检索,我们可以设置正则表达式为全局匹配模式,从而匹配到所有的内容,可以为一个正则表达式设置多个匹配模式,且顺序都可以

-match()会讲匹配到的内容封装到一个数组中返回,即使只查询到一个结果

课堂小练习:筛选出数字

(4)、 replace()

-可以将字符串中指定内容替换为新的内容

-参数:

1:被替换的内容,可以接受正则表达式为参数

2:新的内容

-默认只会替换第一个

你可能感兴趣的:(JavaScript,javascript,开发语言,ecmascript)