发表于: 2017-04-06 21:59:03

1 1323


今天完成的事情:上午实现了点击按钮后按钮文字及其中的编号和页面图片的隐藏和显示的切换,但是在同样的语句中,变化页面编号以及数组来控制内容角色的变化这两点时会影响这个语句的正常运行,数组也没能成功添加进去。下午准备小课堂的事情,就没有在继续任务的实践,晚上又试了试,但是并没有成功。

明天计划的事情:按照今天的思路再试一试,实在不行就换思路再做。问问别人是怎么实现的。

遇到的问题:

 上午使用if(){}else if(){}语句,按照昨天的思路,通过对点击按钮的次数限制和监听,计算其奇数和偶数的性质,来切换按钮文字的变化和其中数字的变化,以及内容的隐藏和显示,但是后来继续在条件语句中追加页面编号和内容数组的判断时就发生了问题,语句不能正常运转了。

收获:总结一下今天小课堂的知识,内容主要是对JS数据类型的简介。

JavaScript的数据类型和常用的方法

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.更多讨论

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

目前知道的有两点:

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

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

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


返回列表 返回列表
评论

    分享到