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#/ |