【JS-task01】

JS有哪些数据类型和常用方法?

小课堂

分享人:钟楚炯

目录

1.背景介绍

2.知识剖析

3.常见问题

4.解决方案

5.编码实战

6.扩展思考

7.参考文献

8.更多讨论

1.背景介绍

JavaScript 一种直译式脚本语言,是一种动态类型、弱类型.基于原型的语言。所谓的弱类型语言,是相对强类型语言来说的,在强类型语言中,变量类型有多种,例如int char float boolean 等不同的类型,相互转换有时需要强制转换而javascript只有一种类型var ,为变量赋值时会自动判断类型并进行转换。

2.知识剖析

2.1 JS有哪些数据类型?

JavaScript 的数据类型,共有6种。分别是undefined、null、boolean、number、string、object

JavaScript 语言的每一个值,都属于某一种数据类型。

1)Undefined:Undefined类型只有一个值,即特殊值undefined。在使用var声明变量,但未对其加以初始化时,这个变量值就是undefined。

2)Null:Null类型是第二个只有一个值的数据类型。其特殊值就是Null。从逻辑角度上看,null是一个空的对象指针。而这也正是使用typeof操作符检测null值,会返回“object”的原因。

3)Boolean:即布尔类型,该类型有两个值:true和false。需要注意的是,Boolean类型的字面值true和false是区分大小写的。也就是说,True和False(以及其它的混合大小形式)都不是Boolean值,只是标识符。

4)Number:该类型的表示方法有两种形式,第一种是整数,第二种为浮点数。整数:可以通过十进制,八进制,十六进制的字面值来表示。浮点数:就是该数值中必须包含一个小数点,且小数点后必须有一位数字。

5)String:String类型用于表示由零或多个16位的Unicode字符组成的字符序列,即字符串。至于用单引号,还是双引号,在js中还是没有差别的。记得成对出现。

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

2.2 JS数据类型的常用方法
这里介绍7种:Boolean()、isNaN()、Number()、parseInt()、parseFloat()、toString()、String()。

Boolean()

可以对任何数据类型的值调用Boolean函数,而且总会返回一个Boolean值。至于返回的是这个值是true还是false,取决于要转换值的数据类型及其实际值。

isNaN()

NaN:即Not a Number,表明这个数值不是数字,表明本来要返回数值的操作数未返回数值的情况。特点:与任何值都不相等,包括NaN本身。

isNaN();函数 接收一个参数,判断这个参数是否不是数值,不是数值返回true。

Number()

Number() 函数把对象的值转换为数字。

parseint()

同Number()函数,把对象的值转换为数字,可以加多一个表明进制的参数

区别:一是对空字符返回NAN,而Number()函数返回0

二是会忽略字符后面的非字符

parseFloat()

同Number()函数类似,区别就是只识别十进制,不会忽略第一个小数点

                
                    //Number() 把对象的值转换为数字。
                    //我们将尝试把不同的对象转换为数字。
                    var test1= new Boolean(true);
                     var test2= new Boolean(false);
                     var test4= new String("999");
                     var test5= new String("1.1");
                     var test6= new String("0xf");
                     var test7= new String("");
                     var test8= new String("11 54");

                     document.write(Number(test1));//1
                     document.write(Number(test2));//0
                     document.write(Number(test4));//999
                     document.write(Number(test5));//1.1
                     document.write(Number(test6));//15
                     document.write(Number(test7));//0
                     document.write(Number(test8));//NaN

                    //parseInt() 可解析一个字符串,并返回一个整数。
                    //我们将使用 parseInt() 来解析不同的字符串,着重于其是否数值模式,
                    parseInt("12345red");//返回 12345
                    parseInt("");//返回 NaN
                    parseInt("22.5");//返回 22
                    parseInt("070");//返回 56(八进制解析)
                    parseInt("70");//返回 70(十进制解析)
                    parseInt("0xf");//返回 56(十六进制解析)

                    parseInt("10");//返回 10(默认十进制)
                    parseInt("19",10);//返回 19 (10+9)(按十进制解析)
                    parseInt("11",2);//返回 3 (2+1)(按二进制解析)
                    parseInt("17",8);//返回 15 (8+7)(按八进制解析)
                    parseInt("1f",16);//返回 31 (16+15)(按十六进制解析)

                    //parseFloat() 可解析一个字符串,一直解析到末尾,
                    //或者遇到一个无效的浮点数字为止。
                    //它始终都会忽略前导的零,只解析十进制。
                    parseFloat("12345red");//返回12345
                    parseFloat("0XA");//返回0
                    parseFloat("22.5");//返回22.5
                    parseFloat("22.34.5");//返回22.34
                    parseFloat("0908.5");//返回908.5

                    //toString() 可把一个逻辑值转换为字符串。
                    //把一个布尔值转换成字符串
                    var boo = new Boolean(true)
                    document.write(boo.toString()) //输出true
                    //可以传一个参数
                    var num=10;
                    alert(num.tostring());   //"10"
                    alert(num.tostring(2));   //"1010"
                    alert(num.tostring(8));   //"12"
                    alert(num.tostring(10));   //"10"
                    alert(num.tostring(16));   //"a"

                    //String() 把对象的值转换为字符串。
                    var test1= new Boolean(1);
                    var test2= new Boolean(0);
                    var test3= new Boolean(true);
                    var test4= new Boolean(false);
                    var test5= new Date();
                    var test6= new String("999 888");
                    var test7=12345;

                    document.write(String(test1)+ "
");//true document.write(String(test2)+ "
");//false document.write(String(test3)+ "
");//true document.write(String(test4)+ "
");//false document.write(String(test5)+ "
");//Wed Oct 28 00:17:40 UTC+0800 2009 document.write(String(test6)+ "
");//999 888 document.write(String(test7)+ "
");//12345

3.常见问题

怎么样判断各种数据类型?

4.解决方案

这里介绍2种方法:typeof、instanceof.
1)typeof:是一个一元运算,放在一个运算数之前,运算数可以是任意类型。 它返回值是一个字符串,该字符串说明运算数的类型。,有两种写法:typeof xxx ,typeof(xxx)
                        
            var a = 100; console.log(typeof a); //输出 number
            var a = 'hello'; console.log(typeof a); //输出 string
            var a = true; console.log(typeof a); //输出 boolean
            var a = undefined; console.log(typeof a); //输出 undefined
            var a = null; console.log(typeof a); //输出 object
            var a = new Object(); console.log(typeof a); //输出 object
            var a = Object; console.log(typeof a) //输出 function
                        
                    
总结:如果右边的是基本类型,则typeof会尝试得到最基本的类型,比如number,string等等,如果是函数名,那么则返回function,这里Object,Number,String,等等都可以看成函数名,如果右边是一个基本的对象,则返回object(返回的都是小写哦)。 注:我们发现typeof null,结果返回了object,这是一个很早之前的BUG,一直沿用至今。 试用范围:如果通过typeof来判断类型,适用于判定基本类型,或者判断是否为函数(function)。
2)instanceof,用于判断一个变量是否某个对象的实例,是一个三元运算---和typeof最实质上的区别 a instanceof b?alert("true"):alert("false") //注意b值是你想要判断的那种数据类型,不是一个字符串,比如Array:
                     
            var a = {};
            alert(a instanceof Object);  //true
            var b = [];
            alert(b instanceof Array);  //true
            var b = '123';
            alert(b instanceof String);  //false
            var c = new String("123");
            alert(c instanceof String);  //true
                     
                
instanceof只能用来判断对象和函数,不能用来判断字符串和数字等。 instanceof还可以判断变量是否为数组。

5.编码实战

6.拓展思考

数组类型属于哪种类型?

                     
                            var a=[];
                            alert(typeof a)  //Object
                     
                

7.参考文献

w3c:JavaScript数据类型

脚本之家:js判断各种数据类型的方法

阮一峰:Javascript标准参考

8.更多讨论

感谢大家观看

BY : 钟楚炯 鸣谢 : 郭健锋|陈中彬