JavaScript数据类型简介及严格检查
1、数据类型
JavaScript中的数据类型与Java中相似,但定义方式有所不同,在JavaScript中,可以使用var定义所有内容,包括整形,浮点类型,字符串和bool类型等等,但是在java中,我们一般使用相应的定义符号来进行变量的定义。
1.1 字符串类型及相关操作
JS中的字符串相对于其他的字符串中还是有一些变化的,当然,也保留了一些特性,比如:转义字符的使用,“.length”方法的使用等等。这些基础的除外,JS中增加了新的特性:
多行字符串:使用``字符隔开,在中间可以插入多行的字符串(此按键在tab键上方);
模板字符串:同样是使用``字符,来将新定义的字符串中嵌套已经定义的字符串,如下图所示

图1.1 模板字符串的使用
字符串的不可变性:当我们定义好了一个字符串之后,如果我们使用数组的方法访问并试图更改其内容的时候,更改会生效,但并不会保存在字符串中,字符串仍未原来的值。

图1.2 字符串的不可变性
我们在源代码中定义的字符串变量,可以通过报错信息了解到就是只读的,不能更改内容,而在浏览器端测试时定义的student字符串时可以做出更改操作的,但是内容并不会改变。
.substring方法:通过该方法可以截取字符串的部分内容,注意,该方法若只提供一个值则是向后截取,两个值则端点取值为”[ )”规则。
1.2 数组及相关操作
JS中数组类似c++中的vector容器,可以通过更改数组长度这个属性值来直接改变数组的长度,也可以在数组前端和后端“塞入”元素。
.length方法:通过.length方法我们可以获取到数组的长度,而更改其获取的值可以直接改变数组的长度;

图1.3 .length()方法获取并改变长度
.push与.pop方法:调用二者可以在数组尾端插入或者弹出元素;
.shift与.unshift方法:shift方法用来删除数组的第一个元素,unshitf方法则用来在数组前端插入元素;

图1.4 四种插入方法的使用示例
.indexOf方法:该方法在字符串中也可以使用,用来查询指定元素在其中的位置;
.reverse与.sort方法:通过调用reverse方法可以将数组顺序翻转,sort方法则可以将数组从小到大排序,这两者在c++中均有使用;
.join:join方法输出数组元素,并用开发者为其提供的参数来将数组元素相连接;
.concat:将两个数组合并,声称一个新的数组,但是注意,这里的新数组是返回值,并不更改原本的两个数组;

图1.5 concat方法拼接字符串和join方法输出字符串
.slice:该方法与字符串中的substring方法一毛一样,包头不包尾地截取数组的指定长度生成一个新数组。
1.3 对象类型详解
JS中对象定义方法如下:

图1.6 JS中对象的定义方法
这里的定义给人的感觉就是JS是简化版的类的定义,有类名,有类的属性值。其实,这也确实有部分类似类的地方,但是相比较于类,它要更加灵活一些。定义时,最后一个属性可以不加逗号分隔开,这也是为了保证对低版本的兼容性的问题。
对象属性的更改:我们直接使用“对象名.属性名”的方法来访问对象的属性,同样可以直接使用赋值语句对其内容进行更改。
对象属性的删除:我们使用delete方法来进行对象属性的删除,如我们想删除student对象中的name属性,我们可以使用delete student.name 的语句来实现删除,效果如下所示

图1.7 删除属性的效果
对象属性的添加:我们只需要使用类似对象属性更改的语句,直接对一个未定义的内容进行更改即可,如想在上面删除了name之后的student中重新添加回name,只需要 stude.name='xiaozhan' 就可以重新添加上name这一属性,如下所示:

图1.8 添加属性的效果
对象属性的查询:查询有两种不同的方法,我们可以调用父对象的方法“hasOwnProperty”进行访问,这里的查询对象是被限制在本对象中,我们定义的有就是true,没有就是false。注意,这里的查询内容需要加单引号,以表示其是字段内容。

图1.9 hasOwnProperty查询本对象和父对象中内容时的返回值
另一种方法则是使用“### in ###”的方法进行查询,比如name in student(承接上文),但是这里的查询范围不仅仅是定义的本对象,同样回去查询父对象的方法,也就是会去被继承的位置进行查询,如果有的话也会输出true,比如我们查询hasOwnProperty返回值也是true。

图1.10 使用in查询本对象和父对象中内容时的返回值
2、严格检查
由于JavaScript中很多内容采用的是较为“随意”的编写方式,所以在一些情况下,我们随手定义的全局变量可能会影响到别人写的JavaScript代码,因此,在JavaScript中,我们提倡使用let来定义局部变量而不是随手使用var定义全局变量。
同时,JavaScript还给我们提供了一种严格检查的方法,通过在<script><script/>中加入'use strict'的字段(注意要添加上括号),可以使JS自动帮助我们检查编写程序的严格性问题,帮助我们完善我们的代码。

图2.1与图2.2 使用和不适用use strict的区别
通常情况下,我们编写都要加上use strict方法,来辅助我们进行相对严谨的JS内容编写。
浙公网安备 33010602011771号