关于JS六种数据类型的总结

最近刷的面试题都有关于这个问题:JS有哪几种数据类型?

答案是有六种:Undefined、Null、B oolean、Number、String、Object。
接下来让我详细的阐(zhai)述(chao)一下这几种类型。
1、Undefined类型
undefined类型只有一个值,那就是——undefined。
当使用var声明变量但没有对它进行初始化时,该变量的值为undefined。例子如下:
var a;
alert(a == undefined); //true
2、Null类型
与undefined一样,他也只有一个值:null。从逻辑角度来讲,null值表示一个空对象的指针,所以用typeof来检测null值时会返回“object”。
值得一提的是,由于undefined值是派生自null,所以在两者之间的相等操作符总是返回true值。例子如下:
alert(null == undefined);  //true

另外,只要意在保存对象的变量还没有真正保存对象时,应该明确的该变量保存null值。

3、Boolean类型

该类型只有两个值:true 和 false。需要注意以下两点:

(1)true不一定等于1,false 不一定等于0;
(2)这两个值区分大小写,True和False 不是Boolean值,只是标识符。
在ECMAScript中,所有数据类型都有与boolean值等价的值,这就要用到转换函数Boolean()了。
转换规则如下:
数据类型 转换为true的值 转换为false的值
boolean true false
string 任意非空字符串 空字符串
number 任何非零数字值 NaN和0
object 任何对象 null
undefined n/a

undefined

4、Number类型

这种类型既可以表示整数又可以表示浮点数值。为了支持各种数值类型,ECMA-262定义了不同的数值字面量格式。
(1)整数的例子如下:
var intNum = 55;     //整数
var octalNum1 = 070;   //八进制的56  
var octalNum2 = 079;   //无效的八进制,值为79
var octalNum3 = 08;   //无效的八进制,值为8
var hexNum = 0xA      //十六进制的10  

八进制开头是0,在严格模式下,八进制字面量是无效的,会导致支持该模式的JavaScript引擎抛出错误。

十六进制开头是0x,后跟任何十六进制数字(0-9和A-F)。其中A-F不区分大小写。
另外,在算术计算时,所有八进制和十六进制标识的数值都最终将被转换为十进制数值。

(2)浮点类型

不说废话,直接上例子:

var floatNum1 = 1.1;
var floatNum2 = 2.1e7; //等于21000000
var floatNum3 = 3e-7;   //等于0.0000003
另外,由于浮点数值的最高精度是17位小数。所以在进行算数计算时其精度远远不如整数。如0.1+0.2并不等于0.3,而是0.30000000000000004。所以,永远不要测试某个特定的浮点数值。

在大多数浏览器中:最小值Number.MIN_VALUE == 5e-324;最大值Number.MAX_VALUE == 1.7976931348623157e+308;如果超过范围,则这个数值将转换为正负无穷,即Infinity(-Infinity)值。
要确定一个数值是否有穷,可以用isFinite()函数。如果是有穷的,则返回true。
(3)NaN
NaN,即非数值。在ECMAScript中,0除以0会返回NaN。(正数除以0返回Infinity,负数除以0返回-Infinity)
这个值有两个特点:一、涉及任何关于NaN的操作都会返回NaN。二、NaN与任何值都不相等,包括NaN本身。

然后,ECMAScript针对以上两个特点定义了isNaN()函数。这个函数会帮我们确认参数是否为不是数值。不说废话直接上例子!

 
  
alert(isNaN(NaN));     //true
alert(isNaN(10));     //false,10是一个数值
alert(isNaN("10"));     //false,"10"可以转化为数值
alert(isNaN("blue"));     //true,不能转化为数值
alert(isNaN(true));     //false,能转化为数值1
这下清晰明了了:任何不能转化为数值的值都会导致这个函数返回true。

5、String 类型
String 类型用于表示由零或多个16位Unicode字符组成的字符序列,即字符串。字符串可以由单引号或双引号表示,但注意不要“牛头不对马嘴”,左右引号必须匹配。
(1)字符字面量
String类型包含一些特殊的字符字面量,也叫转义序列。
字面量 含义
\n 换行
\t
制表
\b 退格
\r 回车
\f 进纸
\\ 斜杠
\' 单引号
\“ 双引号
\xnn 以十六进制代码nn表示一个字符,其中n为0-F
\unnnn
以十六进制代码nnnn表示一个Unicode字符,其中n为0-F
(2)字符串的特点
在ECMAScript中,字符串是不可变的,也就是说,字符串一旦创建,他们的值就不能改变。如果要改变变量中字符串的值,先要销毁变量中原来的字符串,再用另一个包含新值的。

例子如下:
var lang = "Mrs";
lang = lang + " Rabbit";   
alert(lang); //Mrs Rabbit

6、Object类型
Object其实就是一组数据和功能的集合。创建个对象看看吧!
var o = new Object();

但仅仅创建一个对象并没有什么卵用,还有很多方法和属性,需要在详细的对象中体现,后续更新再独立给它进行总结吧。这里不一一讲述了。

以上就是Js中六种数据类型,感觉自己写出来有钟更加深入的理解了。面试问到应该不怂不过这个博客的编辑器还真的不会用,创建的代码块怎么删掉呢?还有保存了草稿打开,格式都不一样了,发布出去不知道会不会又不一样

(参考书籍:Javascript高级程序设计第三版)

你可能感兴趣的:(Javascript)