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);//false3、Boolean(布尔)
true 真
false 假
4、Undefined(未定义)
有且只有一值undefined。
5、Null(空)
有且只有一个值null
复杂数据类型:引用数据类型、复合数据类型
//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)
//基本数据类型:操作时按值来访问
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返回的数据类型
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支持把一种数据类型转换成数字、字符串、布尔。
对象换转成这几种没意义,因为对象里可以放任意类型
任意类型转换成数字
空字符串和空格字符串返回0,
把字符串转换成数字
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
判断一个值是不是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、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>