首页 存档 技术 查看内容

【郑州-第七十三期】JavaScript的数据类型和常用的方法

2018-3-30 13:00 |来自: 互联网 315 0

摘要: 1.背景介绍 随着我们的任务推进,基本已经陆续开始JavaScript部分的任务,今天跟大家分享和讨论一下JavaScript的基础部分的数据类型的知识。 2.知识剖析 2.1 JavaScript数据类型有哪些 在ECMAScript中,将数据类 ...

1.背景介绍


随着我们的任务推进,基本已经陆续开始JavaScript部分的任务,今天跟大家分享和讨论一下JavaScript的基础部分的数据类型的知识。


2.知识剖析


2.1 JavaScript数据类型有哪些

在ECMAScript中,将数据类型分为6种,分别是Undefined、Null、Boolean、Number和String,还有一个复杂数据类型Object。


ECMAScript 是标准化的 JavaScript 语言,它是一种由Ecma国际(前身为欧洲计算机制造商协会)通过ECMA-262标准化的脚本程序设计语言。这种语言在万维网上应用广泛,它往往被称为JavaScript或JScript,但实际上后两者是ECMA-262标准的实现和扩展。1997 年发布了第一版,1998 年和1999 年发布了第二和第三个版本,之后 ECMAScript 沉寂 了许多年,直到 Ajax 流行起来后标准工作才再次起步,2009 年发布了第五个版本,2015 年发布了第六个版本,第七个版本被称为 ECMAScript 2016,ECMAScript 2017为 ECMAScript 发布的第八个版本。


2.2 Undefined数据类型

Undefined数据类型只是一个值,即特殊的undefined。在使用var声明变量但为对其进行初始化时,变量的值就是undefined。

var q;

alert(q == undefined); //ture


2.3 Null数据类型

Null数据类型也是一个只有一个值的数据类型。其特殊值就是Null。从逻辑上看,null是一个空的对象指针。undefined值派生自null值。

var a = null;

typeof (a);

alert(null == undefined); //true


2.4 Boolean数据类型

Boolean数据类型,译作布尔值,只有两个字面量:true和false。它们是区分大小写的。

任何数据类型的值调用Boolean()函数都会返回一个Boolean值。


2.5 Number数据类型

Number数据类型使用IEEE754格式表示,分为整数和浮点数值(浮点数值在某些语言中也被成为双精度数值)。

不同进制的字面表达不同:

var num1 = 42; //十进制

var num2 = 071; //八进制

var num3 = 079; //十进制(尾数9超过了八进制的范围)

var num4 = 0xA; //十六进制


浮点数值,必须包含一个小数点,小数点后必须至少有一个数字。如果小数点前边的整数为0 ,推荐要写上,如果没写,安好插件的编辑器会报这个错误。

对于极大或者极小数,用科学技术法e表示浮点数值。大多数浏览器中的最大值为1.7976931348623157e 308。超出JavaScript数值范围的值会返回一个特殊值Infinity值,正数为Infinity(正无穷),负数为-Infinity(负无穷)。其值无法继续参与下一步运算。可以使用isFinite()函数判别数值是不是有穷的。

var num5 = 5.56e8; //556000000


NaN,非数值(Not a number)。表示一个本来要返回数值的操作未返回数值的情况,省去报错。有两个特点:1. 任何涉及NaN的操作都会返回NaN。2. NaN和任何值都不相等,包括其本身。

alert(NaN == NaN); //false

alert(isNaN("10")); //false 可以被转换成数值10

alert(isNaN("red")); //true 不能转换为数值

alert(isNaN(true)); //false 可以被转换成数值1


2.6 String数据类型

String数据类型表示由零或者多个16位Unicode字符组成的字符序列,简称字符串。由('')("")表示。字符串是不可变的,一旦创建,值不能改变。

使用toString(),可以将其他类型值转换成字符串,但是null和undefined不适用这个方法。使用String()函数可以将null和undefined进行转换。

var value1 = 10;

var value2 = true;

var value3 = null;

var value4;

alert(String(value1)); //"10"

alert(String(value2)); //"true"

alert(String(value3)); //"null"

alert(String(value4)); //"undefined"


2.7 Object数据类型

Object数据类型,称为对象,是一组数据和功能(函数)的集合。可以用new操作符后跟要创建的对象类型的名称来创建。也可以用字面量表示法创建。在其中添加不同名(包含空字符串在内的任意字符串)的属性。

1 var person = new Object();

person.name = "大娃";

person.age = 24;

2 var person = {

name: "大娃",

age:29 //最后一个属性不能添加逗号

}

3 var person = new Object();

person["name"] = "大娃";

person["age"] = 24;


3.常见问题

问题: 数据类型之间转换的方法有哪些?


4.解决方案

转换成字符串的方法:toString(),String()函数;

转换成数字的方法:Number()、parseInt()、parseFloat()这三个函数;

转换成布尔值的方法:Boolean()函数;


5.编码实战

比较三种转换成数值的方法:

一 var num1 = Number("Hello world!"); //NaN

var num2 = Number(""); //0

var num3 = Number("000011"); //11

var num4 = Number(true); //1

var num2 = parseInt(""); //NaN


二 var num1 = parseInt("12345world"); //12345

var num3 = parseInt("0xA"); //10(十六进制)

var num4 = parseInt(43.2); //43

var num5 = parseInt("070"); //56(八进制)

var num6 = parseInt("70"); //70(十进制)


三 var num1 = parseFloat("12345world"); //12345

var num3 = parseFloat("0xA"); //0

var num4 = parseFloat(43.288.5); //43.288

var num5 = parseFloat("070.58"); //70.58

var num6 = parseFloat("3.123e3"); //70(十进制)


6.扩展思考

问题: 数组类型属于哪种类型?

数组类型是对象。


7.参考文献

参考一:《JavaScript权威指南》

参考二:《JavaScript高级程序设计》


8.更多讨论

讨论点:基本数据类型和引用类型的区别?

目前知道的有两点:

第一,基本数据类型不是对象,而引用数据类型是对象,或者说引用数据类型就是对象类型。

第二,基本数据类型和引用数据类型在参数传递时的内在机理不同,基本数据是一个副本,而引用类型是一个对象指针,指向同一个数据。


有不对的地方,还望指正!

PPT链接:https://ptteng.github.io/PPT/PPT/js-01-data type of javascript.html#/