JavaScript中数据类型分为两大类,基本数据类型和复杂数据类型(引用数据类型)
基本数据类型有5种,Es6新增Symbol(暂时还没学Es6,手动滑稽)
Number
String
null
undefined
Boolean
Number:
由于内存的限制,存在最大数和最小数,可以通过Number.MAX_VALUE和Number.MIN_VALUE来查看。浏览器不同,返回的结果可能不同。当我们定义的数或者得到的变量超出最大数和最小数的限制,会返回 Infinity 或者 -Infinity。可以通过isFinite()函数来查看变量是否介于最大数或者最小数之间。
console.log(Number.MAX_VALUE); //1.7976931348623157e+308
console.log(Number.MIN_VALUE); //5e-324
console.log(Math.pow(10,400));//Infinity
var ini = Math.pow(10,400);
console.log(isFinite(ini));//false
强制类型转换:有三个函数可以把非数值转换为数值类型:Number()、parseInt()和parseFloat().
Number()函数可以用于任何数据类型,其中需要注意的是:
console.log(Number(null));//0
console.log(Number(undefined));//NaN(not a Number)
另外两个函数专门把字符串变成数值。
parseInt()函数将字符串转化为整数,可以传入两个参数,第一个参数是要转换的值,第二个参数是按几进制转换,不传入则默认是十进制。
var str = '10';
console.log('结果为'+parseInt(str,2)); // 结果为2 (按二进制转换)
String:
toString ()方法,可以将值转换为字符串 。几乎所有的值都有toString()方法,null和undefined没有该方法。
调用toString()方法时,不需要传入参数,但是可以传入一个参数表示输出数值的进制数,默认为十进制。这在某些情况下是很有用的。
var num = 10;
console.log(num.toString(2)); //1010,该返回值是字符串类型
var a;
console.log(a.toString()); //报错,null调用toString()也会报错
前面提到 null 和 undefined 没有toString()方法,但是有些情况我们并不知道要转换的值是不是 null 或 undefined ,这时候我们可以使用 String() 函数。
调用 String() 函数的值遵循的规则就是如果该值有 toString() 方法,就调用它并返回相应的结果。如果值为 null ,则返回 ‘null’,如果值为 undefined,则返回 ‘undefined’.
var a ;
var num = 10;
console.log(String(num));//'10'
console.log(String(a));//undefined
console.log(String(null));//null
String()方法会不会就像我下面写的呢(滑稽)
function str(obj){
switch(obj){
case null:
obj='null'
break;
case undefined:
obj='undefined'
break;
default:
obj = obj.toString();
}
return obj;
}
复杂数据类型:
基本数据类型的赋值操作是吧变量的值赋予另一个变量。所以一个变量的值赋予给另一个变量,其中一个变量改变,并不会以影响另一个变量。
var a =10;
var b = a;
b = 20;
console.log(a);//10
但是复杂数据类型并不是这样,复杂数据类型之所以又叫引用数据类型, 是因为引用数据类型的变量保存的是内存地址的引用。赋值操作就是将内存地址的引用赋予给另一个变量。所以改变其中一个变量,另一个变量会随之改变。
var obj = {};
obj.name = 'cxk';
var obj2 = obj;
obj2.name = 'dva';
console.log(obj.name);//dva