您的位置:首页 > Web前端 > JavaScript

javascript中6种基本数据类型详解

2017-08-05 17:43 746 查看
javascript中有5中数据类型(也称为基本数据类型):Undefined、Null、Boolean、Number和String,还有一种复杂数据类型——object,object本质是由一组键值对组成的。

typeof操作符:用于检测给定变量的数据类型,对一个值试用typeof操作符可能返回下列某个字符串: ♦ “undefined”——表示值未定义; ♦ “boolean”——表示值是布尔值 ;♦ “string”——表示值是字符; ♦ “number”——表示值是数值;  ♦ “object”——表示值是对象或null;♦“function”——表示值是函数;

Undefined类型:Undefined类型只有一个值即undefined。对未初始化和未声明的变量执行typeof操作符都会返回undefined,这就说明当我们对一个变量执行typeof操作符时我们不能立即确定这个变量是未初始化还是未声明,因此显示的初始化变量依然是明智的选择,但不应该初始化为undefined。

Null类型:Null类型是第二个只有一个值的数据类型即null。null值表示一个空指针对象,因此typeof操作符检测null值时返回“object”。如果定义的变量将来用于保存对象那么最好将该变量初始化为null而非其他值,这样只要检查null值就可以知道相应的变量是否已经保存了一个对象的引用。
     无论在什么情况下都没有必要把一个变量的值初始化为undefined,但对于意在保存对象的变量则应明确的初始化为null值。这样做不仅体现null作为空对象指针的惯例,而且也有助于进一步区分null和undefined。

Boolean类型:Boolean类型有两个字面值:true和false。true不一定等于1,false不一定等于0。需要注意的是true和false是区分大小写的,也就是说True和False(以及其他的混合大小写形式)都不是Boolean值,只是标识符。在javascript中所有类型的值都有与这两个Boolean值等价的值,要讲一个值转换为布尔值可以调用转型函数Boolean()。 

//这些转换规则对理解流控制语句(如if语句)自动执行响应的Boolean转换很重要
var message="hello";
if(message){
alert("value is true");
}


数据类型转换为true的值转换为false的值
Booleantruefalse
String任何非空字符串“”(空字符串)
Number任何非0数字0和NaN
Object任何对象null
Undefined不适用  undefined
Number类型:

//浮点数值
var num1=1.1;
var num2=0.1;
var num3=.2; //有效,但不推荐


由于保存浮点数值需要的空间是保存整数值的2倍因此javascript会不失时机 的将浮点数值转换为整数数值。

var num4=1.; //小数点后没有数字——解析为1
var num5=10.0;//整数——解析为10


对于极大或极小的数值可以用e表示法,e表示法表示的数值等于e前面的数值乘以10的指数次幂,大小写e均可。

var num0=3.125E7;  //3.125*10的7次方,等于31250000
var num5=3e-7;  //3*10的负7次方,0.0000003
//浮点数值计算会产生舍入误差问题,这是使用基于IEEE754数值的浮点计算的通病,永远不要测试某个特定的浮点数值。
var a=0.1;
var b=0.2;
alert(a+b); //0.30000000000000004,特例


2.数值范围:javascript能够表示的最小数值保存在Number.MIN_VALUE中,最大值保存在Number.MAX_VALUE中。如果某次计算的结果超出了javascript的数值范围则这个数值将被自动转换成特殊的Infinity值(负数则转换为-Infinity(负无穷),整数则转换为Infinity(正无穷))。正或负的Infinity值无法参与下一次的计算。使用isFinite()函数可以判断数值是否在最小值与最大值之间。

var result=Number.MAX_VALUE+0.1;
alert(isFinite(result));  //false,超出了最大值
console.log(Number.NEGATIVE_INFINITY); //-infinity
console.log(Number.POSITIVE_INFINITY); //infinity


3.NaN:即非数值(Not a Number)。任何涉及NaN的操作都会返回NaN,NaN与任何值都不相等。javascript定义了isNaN(),该函数接受一个参数,该参数可以是任何类型,函数在接收到一个参数后
4000
会尝试将这个参数转换为数值然后再判断是否不是数值,注意判断结果,不是数值返回true,是数值返回false。

//对isNaN()函数进行个人习惯封装
function isNum(number){
if(!isNaN(number)){
return true;
}
else{
return false;
}
}


 4.数值转换:

var num1=Number(true); //1
var num2=Number(1.0); //1
var num3=Number(""); //0
var num4;
Number(num4); //undefined
var num5=Number(null); //0
var num6=Number("00123abc"); //NaN
var num7=Number("00123");   //123,前导0被忽略


var num1=parseInt("1a2s3f"); //1
var num2=parseInt("fda123"); //NaN
var num3=parseInt("");       //NaN
var num4=parseInt("22.5");   //22
var num5=parseInt("070");    //56(八进制数),前导0不会被忽略


//parseFloat()与parseInt()有2个区别,1.parseFloat()第一个小数点有效;2.parseFloat()始终不会忽略前导0。
var num1=parseFloat("012.32.gsa"); //12.32


String类型:数值、布尔值、对象、字符串值都有toString()方法,但null和undefined值没有。在不知道要转换的值是不是null或undefined的情况下,可以使用转型函数String(),这个函数能将任何类型的值转换为字符串,String()函数遵循下列转换规则:

/*
* 如果值有toString()方法,则调用该方法并返回结果
* 如果值是null,则返回“null”
* 如果值是undefined,则返回“undefined”
*/
alert(String(10));   //"10"
alert(String(true)); //"true"
alert(String(null)); //"null"
var test;
alert(String(test)); //"undefined"


Object类型:在javascript中Object类型是所有其他实例的基础。需要注意的是宿主对象(BOM和DOM对象)可能会也可能不会继承Object。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: