欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-06-04 23:17:43
...

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

答案是有六种:Undefined、Null、Boolean、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高级程序设计第三版)