javascript数据类型【小结】

javascript中的数据类型

js中有:
五种基本数据类型:Number、String、Boolean、Null和Undefined。
一种复杂数据类型:Object
即js种总共有六种数据类型。

五种基本数据类型:

1. Number类型

1.1 常见进制表示

var intNum=55; //十进制整数。由最基本的数值字面量表示。
var octNum=070; //八进制数值。第一位必须是0,然后是八进制数字序列0~7。
var hexNum=0x1f; //十六进制数值。前两位必须是0x,然后是任何十六进制数字0~9及A~F,字母不区分大小写。

注意:八进制数值如果超出了范围,前导0将被忽略,后面的数值将被当作十进制数值解析。所有八进制和十六进制的数值在参与计算时都将被转换成十进制数值。


1.2 浮点数值

浮点数值要求数值中必须包含一个小数点,并且小数点后面至少有一位数字。
js在存储浮点数值时,由于浮点数占用存储空间比整数大,会将部分本身是整数的浮点数存储为整数。

var doubleNum1=1.; //小数点后面没有数字。存储为整数1.
var doubleNum2=10.0; //存储为整数10.

用e表示法,即科学计数法,来表示那些极大或者极小的数值。

var doubleNum3=3.12e7; //即3.12*10^7.
var doubleNum4=3.12e-7; //即3.12*10^-7.

1.3 数值范围

js能表示的最小数:Number.MIN_VALUE
js能表示的最大数:Number.MAX_VALUE
如果计算结果超过js所能表示的数值范围,正值会被转换为Infinity,负值会被转换为-Infinity.

采用isFinite()函数来判断某个数值是否是在最小与最大数值之间。
如下所示:

var result=Number.MAX_VALUE+1;
alert(isFinite(result)); //false

1.4 NaN

NaN,即非数值”Not a Number”,是一个特殊的数值,表示一种非数值情况,它与任何值都不相等,包括NaN本身。
通过isNaN()函数来判断某个数是否”不是数值”。

alert(NaN==NaN); //false
alert(isNaN(NaN)); //true
alert(isNaN(10)); //false
alert(isNaN("10")); //false 因为"10"可以转换成数值10
alert(isNaN("blue")); //true 因为"blue"不可以转换成数值
alert(isNaN(true)); //false 因为true可以转换成数值1

1.5 数值转换

有三个函数可以将非数值转换成数值:
Number() 可用于任何数据类型;
parseInt()、parseFloat() 专门用于字符串转换成数值;

var num1=Number(true);        //1
var num2=Number(false);       //0

var num3=Number("Hello");     //1
var num4=Number("");          //0
var num5=Number("0099");      //99

var num6=Number(null);        //0
var num7=Number(undefined);   //NaN

如果是对象,先调用对象的valueOf()方法,如果转换结果为NaN,再调用对象的toString()方法。每次调用时的转换规则参照上述例子。

由于Number()函数在转换字符串时比较复杂而且不够合理,因此处理整数的时候更常用的是parseInt()函数。

var num1=parseInt("123blue"); //123
var num2=parseInt("");        //NaN
var num3=parseInt("22.35");   //22
var num4=parseInt("070");     //56 八进制
var num5=parseInt("70");      //70 十进制
var num6=parseInt("0xf");     //15 十六进制

2. String类型

1.字符串特点

字符串用单引号”或双引号”“表示完全相同。

alert('str'==="str"); //true

字符串是不可改变的,即字符串一旦被创建,它的值就不能改变。如果要改变,则需要销毁原来的字符串,再创建一个新的字符串。

var lang="javascript";
lang=lang+"good";

第二行并不是直接在lang的后面追加字符串,后台是先创建一个能容纳这两个字符串的新字符串,将这两个字符串填充到新字符串中,然后销毁原来的两个字符串。

1.2 转换字符串

常用的字符串转换函数有:toString()和String().
除了null和undefined两个数据类型没有toString()方法,其他数据类型都有这个方法,该方法能直接返回当前数据类型的字符串。

var age=10;
var ageString=age.toString();   //"10"十进制
var ageString=age.toString(2);  //"1010"二进制
var ageString=age.toString(8);  //"12"八进制
var ageString=age.toString(16); //"a"十六进制

var fon=true;
var fonString=fon.toString(); //"true"

String()函数可以将任何类型的值转换成字符串。
如果某类型数据有toString()方法,则调用该方法并返回结果,参照上述例子。

var str1=String(null);       //"null"
var str1=String(undefined);  //"undefined"

3.Boolean类型

1.布尔值特点

Boolean类型只有两个值:true和false。
1.true不一定等于1,false不一定等于0.
2.true和false都是区分大小写的,True!=true,False!=false 其他大小写字母组合同理均不是Boolean值.

alert(true==1);  //true 因为true可以转换成数值1
alert(true===1); //false

2.布尔值转换

常用布尔值类型转换函数:Boolean().
可以对任何数据类型的值调用Boolean()函数.

var b1=Boolean(true);         //true
var b2=Boolean(false);        //false

var b3=Boolean("abc");        //true
var b4=Boolean("");           //false

var b3=Boolean(10);           //true
var b4=Boolean(0);            //false
var b4=Boolean(NaN);          //false

var obj={a:1};
var b5=Boolean(obj);          //true

var b6=Boolean(null);         //false
var b6=Boolean(undefined);    //false

4.Null类型

Null类型特点

Null类型只有一个值nullnull表示一个空对象指针。
alert(typeof null); //"object"
var test1=Number(null);   //0
var test1=String(null);   //"null"
var test1=Boolean(null);  //false

一般如果想用变量保存一个对象,但还没开始保存这个对象,可以明确将该变量设置为null值。这样不仅可以体现null作为空对象指针的惯例,也可以进一步区分null和undefined。

5.Undefined类型

1.Undefined类型特点

Undefined类型也只有一个值undefined。
一个变量如果只申明并未初始化,那么这个变量的值就是undefined。

var test;
alert(test===undefined); //true

一个变量如果未初始化,不需要手动用undefined显式初始化变量,因为未初始化的变量默认值就是undefined。

对于未申明的变量,其值不是undefined。与申明了变量但是未初始化是不一样的。

var test;
alert(test); //undefined
alert(name); //产生错误

对于未声明的变量,只能进行一项操作typeof

alert(typeof name); //undefined
alert(typeof test); //undefined

虽然变量声明了但未初始化和变量未声明,进行typeof操作结果一样,但是从技术角度看是有本质区别的。

2.Undefined类型和Null类型比较

由于undefined值是派生自null值的,ECMA-262规定对它们的相等行测试要返回true。

alert(null==undefined);    //true
alert(null===undefined);   //false

6.Object类型

1.对象的定义和创建

对象是一组数据和功能的集合。
Object类型中的所有方法,它所有实例均可以使用。

通过new操作符来创建对象
var obj=new Object();
如果不传递参数可以省略括号。即:
var obj=new Object;

2.Object类型实例的属性及方法

constructor:对象的构造函数

hasOwnProperty(propertyName):用于检测给定的属性在当前对象中是否存在,作为参数的属性名propertyName必须以字符串形式指定。该方法不会搜索对象的原型链,而”propertyName in Object”会搜索原型链。例子如下:
obj.hasOwnProperty(“name”);

isPrototypeof(object):用于检测传入对象是否是当前对象的原型。

propertyIsEnumerable(propertyName):用于检测给定的属性能否使用for-in语句来枚举。参数也需要字符串形式。

toLocaleString():返回对象的字符串表示,该字符串与执行环境的地区对应。

toString():返回对象的字符串表示。

valueOf():返回字符串、数值或布尔值表示。通常与toString()方法返回值相同。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值