JavaScript的数据类型及转换

492 阅读7分钟

Js中的数据类型分为:基本数据类型和复杂数据类型 

基本数据类型:又称简单的数据类型

1、String(字符串)

放在一对单引号或双引号里,由0个或多个字符组成的串

–注意:引号是成双对出现的

如果字符串里有引号,外面的引号一定与里面的引号相反。

如果里面的引号和外面的相同,那就用转义字符\

var n="1111";      
var c='aaaa',d='0',e=' ',f='';      
//var m="abc"1232"";//报错      
var m="abc\"1232\"";//转义字符放在要转意的字符的前面      
var m='abc"1232"',n="abc'mmmm'";            
console.log(typeof e);//string      
console.log(typeof f);//string      
console.log(m,n);

2、Number(数字)

1、由0到9之间任意数字组合而成,可以是整数也可以是小数字的范 围正无穷(+Infinity)与负无穷(-Infinity)之间。

2、NaN:not a number

当运算失败时会出现

自已与自己都不相等

console.log("abc"-19);//NaN
console.log(NaN==NaN);//false

3、Boolean(布尔)

true 真

false 假 

4、Undefined(未定义)

有且只有一值undefined。 

5、Null(空)

有且只有一个值null

复杂数据类型:引用数据类型、复合数据类型 

•Object 对象

•由简单的数据类型与复合数据类型任意组合而成。它的数据放在一个括号当中,每个数据由一个键值对组成,数据可以是0个也可以是多个,每个数据之间用逗事情分开,最后一个数据不能加逗号(如果加了报错)。 

//var 对象名={key:value,key:value......}
      var person={name:'lisa',age:18,height:180};
      var person1={name:'lis',age:18,height:180,0:1111,1:'liu'};//value是字符串时要加引号
      var person3={name:'xiaoMing',say:['english','china']}
      var person4={name:'xiaoMing',say:function(){console.log('english1111')}}
      var person5={name:'lisa',jineng:{com:'gaoji',js:'gaoji',en:'cuji'}}
      console.log(person.name);//对像名.属性名=对象名.key
      console.log(person1.name);//lis
      console.log(person1[0]);//1111
      console.log(person1[1]);//liu
      console.log(person3.say[1]);
      person4.say();
      console.log(person5.jineng.js)

•键值对 key:value

•Key数据名称,它可以加引号,也可以不加,当这个名称不符合变量命名规时需加引号,数字除外,引号是成对出现的。
•value:数据对应属性的值,这个值可以是简单的数据类型也可以是复杂的数据类型。

•操作对象用的方法就是属性的方法 

  //基本数据类型:操作时按值来访问
      var n="abc";
      var m=n;//m='abc'
        m='123';//m='123'
      console.log(m,n);//'123','abc',
      //引用数据类型:操作时按地址来访问
      var x={name:'lisa',age:18};
      var y=x;
      y.name="xiaoming";
      console.log(x.name);
      console.log(y.name);

 typeof操作符

•Typeof检测一个数据的类型,返回这个类型对应的字符串(全小写)
•返回的结果与系统中定义的用区别?
•它是个运算符
•语法:typeof 数据

• typeof(数据) 

Typeof返回的数据类型

系统定义的数据类型 typeof返回的数据类型

String                                            string

Number                                        number

Boolean                                        boolean

Undefined                                    undefined

Null                                                 object

Object                                           object

null的typeof的结果是object,函数的typeof结果为function,但是js当中没有给函数定义一个类型

var n=12323,m='12221',x=undefined,z={};
      console.log(typeof n);
      console.log(typeof (n));
      console.log(typeof x);//undefined
      console.log(typeof (Null));//undefined
      console.log(typeof z)

实例:简单的计算器 

    <input type="text" id="input1">+
    <input type="text" id="input2" value="" />
    <input type="button" value="=" id="btn"/>
    <span id="res"></span>
    <script type="text/javascript">
      var btn=document.getElementById('btn');
      btn.onclick=function(){
        var input1=document.getElementById('input1');
        var input2=document.getElementById('input2');
        var res=document.getElementById('res');
        res.innerText=parseFloat(input1.value)+parseFloat(input2.value);
        
      }
    </script>

类型转换

把一种数据类型转换成别外一种数据类型

Js支持把一种数据类型转换成数字、字符串、布尔。

对象换转成这几种没意义,因为对象里可以放任意类型

任意类型转换成数字

•语法:Number(要转换的值)
•1、Undefined 转数字
• 结果为NaN
•2、Null
• 结果为0
•3、Boolean
• true 结果为1
• false结果为0
•5、字符串
•字符串用number转换时只要有字母就返回NaN,

空字符串和空格字符串返回0,

•纯数字字符中返回数字

•6、object 

把字符串转换成数字

parseInt() 把字符串转成整数型数字

parseFloat() 把字符串转成浮点型(小数)数字

传进来的字符串必需是数字或者空格加数字开头,它会从数字开始,一位一位往后找,直到找到的字符不是数字就会停止,会把找到的数字字符转成真正的数字。如果没找到那就返回一个NaN

    <script type="text/javascript">
//      Number(要转换的内容)
      console.log(Number(undefined));//NaN
      console.log(Number(null));//0
      console.log(Number('abc'));//NaN
      console.log(Number('1234'));//1234
      console.log(Number('1234as'));//NaN
      console.log(Number(' '));//0
      console.log(Number(''));//0
      
      //字符串用number转换时只要有字母就返回NaN,空字符串和空格字符串反回0,纯数字字符中返回数字
      console.log(Number(false));//0
      console.log(Number(true));//0
      console.log(Number('123.123'));//123.123
      console.log(Number('123.123ab'))//NaN
      //parseInt(要转换的内容)
      console.log(parseInt('123.123ab'));//123
      console.log(parseInt('123aab12323'));//123
      console.log(parseFloat('123.123ab'));//123.123
      console.log(parseFloat('123.12.3ab'))//123.12
      console.log(parseFloat('123bc.12.3ab'))//123
      console.log(parseFloat(' 123bc.12.3ab'))//123
      console.log(parseInt('aab12323'));//NaN
    </script>

isNaN

•语法:isNaN(参数)

判断一个值是不是NaN,它会先把参数用Number()转换一下,。

它用个功能是用来检测数字的,但它的本意不是用来检测数字

返回

如果参数为NaN返回 true 否则它返回false

isNaN()传进来的值如果是一个数字的话,那就返回一个false

<script type="text/javascript">
      //判断一个值是不是NaN,它会先把参数用Number()转换一下,。
      console.log(isNaN(9));//false
      console.log(isNaN('32b'-9));//true
</script>

任意类型转换成字符串

语法:String(参数)

1、Undefined 转换成字符串返回

undefined

2、Null

null

3、Number

把数字加上引号

4、 Boolean

true 转换成字符串 ‘true’

false转换成字符串‘false’

5、String 结果就是本身

6、Object

    结果也是给对象加上引号

<script type="text/javascript">
      //String(要转的东西)
      console.log(String(undefined));//'undefined'
      console.log(String(null));//null
      console.log(String(true));//true
      console.log(String(false));//false
      console.log(String(1232),typeof String(1232));//1232,string
      console.log(String('aab4545abc'));//aab4545abc
      console.log(typeof String({name:'lisa'}));
      var n=132323+'';
      console.log(typeof n);
      console.log(typeof (132323+''))
    </script>

任意类型转换成Boolean

<script type="text/javascript">
      console.log(Boolean(undefined))//false
      console.log(Boolean(null))//false
      
      console.log(Boolean(0))//false
      console.log(Boolean(NaN))//false
      console.log(Boolean(232323))//true
      
      console.log(Boolean('0'))//true
      console.log(Boolean(''))//false 空
      console.log(Boolean(' '))//true  空格
      console.log(Boolean('abc'))//true
    </script>

类型转换分类

•类型转换分为显示类型转换和隐式类型转换。
•1、显示类型转换
•很明确的通过一些方法,将某种数据类型转换成另一种数据类型。
•Number(),parseInt(),parseFloat() 明确将数据转换成数字
•String()明确将数据转换成字符串
•Boolean() 明确将数据转换成布尔
•2、隐式类型转换
•在进行一些操作时,目的不是做类型转换,但要进行操作的话那么数据必需符合某种类型,js在内部对数据进行一些转换 +- * / ==


数学方法

1、Math.ceil()

作用:把一个数向上取整

语法:Math.ceil(数字)

2、Math.floor()

作用:把一个数向下取整

3、Math.round()

作用:把一个数四舍五入

4、Math.abs();

作用:取一个数的决对值

5、Math.random()

作用:取0到1之前的随机数,包含0 不包含1.

求x-y间的随机数的方法

Math.round(Math.random()*(y-x)+x);

<script type="text/javascript">
      console.log(Math.ceil(1.3))//2
      console.log(Math.ceil(-1.3))//-1
      console.log(Math.floor(1.3));//1
      console.log(Math.floor(1.9));//1
      console.log(Math.floor(-1.3));//-2
      console.log(Math.round(1.3));//1
      console.log(Math.round(-1.3));//-1
      console.log(Math.round(1.9));//2
      console.log(Math.round(-1.9));//-2
      console.log(Math.abs(-1.9));//1.9
      console.log(Math.abs(1.9));
      console.log(Math.random());
      //1到10
      console.log(Math.random()*9+1);
      //1到10之间不包括10,包括1
      Math.floor(Math.random()*9+1);
      //1到10之间包括10,不包括1
      Math.ceil(Math.random()*9+1);
      Math.round(Math.random()*9+1);
    </script>