详解JS数据类型
来源:互联网 发布:淘宝app充值中心在哪 编辑:程序博客网 时间:2024/06/18 07:42
详解JS数据类型
Javascript中的数据类型有以下几种情况:
基本类型:string,number,boolean
特殊类型:undefined,null
引用类型:Object,Function,Date,Array,RegExp, ...
1、string
string类型的数据是由16位Unicode字符组成的字符串,用typeof检测其数据类型如下:
var
str =
"Hi, Javascript"
;
console.log(
typeof
str);
// string
在Javascript中,除过undefined和null之外的其他的数据类型都有toString()方法,因此这些数据类型都可以通过toString方法转化为对应的string类型。
123..toString();
// "123"
true
.toString();
// "true"
new
Object().toString();
// [object Object]
"Hello"
.toString();
// "Hello"
undefined.toString();
// Error
null
.toString();
// Error
一般情况下,toString 不需要传递参数,而将数值转化为字符串时,通过传递一个radix参数,可以将数值转化为对应的二进制、八进制和十六进制的字符串表示。
10..toString(2);
// 1010 二进制表示
10..toString(8);
// 12 八进制表示
10..toString(16);
// a 十六进制表示
2、number
在Javascript中,没有int和float数据类型,而是用number来表示整数和浮点数值,除此之外,number还有一个特殊的数值,即NaN (Not a Number),NaN表示一个承诺返回数值类型数据但实际没有返回的情况。NaN有两个特点:一是任何涉及NaN的操作都会返回NaN,二是NaN不与任何数值相等,包括自己,但可以通过isNaN()方法来判断一个数值是否为NaN
typeof
123;
// "number"
typeof
123.45
// "number"
typeof
NaN;
// "number"
NaN+1;
// NaN
NaN ==
false
;
// false
NaN == NaN;
//false
isNaN(NaN+1);
//true
3、boolean
boolean类型只有两个字面值:true和false 。 但在Javascript中,所有类型的值都可以转化为与boolean等价的值,转化规则如下:
(1)所有对象都被当作 true,
(2)当字符串为空时,该字符串被当作false
(3)null 和 undefined 被当作 false
(4)当数字为0时,该数字被当作 false
typeof
true
;
// "boolean"
typeof
false
;
// "boolean"
Boolean(
new
Object());
//true
Boolean(undefined);
//false
Boolean(
null
);
//false
Boolean(
''
);
//false
Boolean(0);
//false
Boolean(100);
// true
需要注意的是,平时我们看到的if(1) {...} ,实际上JS引擎在内部也对这些值做了boolean转化然后再进行运算的。
4、undefined
该类型只有一个值,即 undefined。 undefined意为`未定义`,即当使用var声明了变量但未进行复制时,这个变量的值就是undefined。undefined产生的原因有两种:
(1)访问对象不存在的属性或方法
(2)声明了变量但从未赋值
var
v1,obj = {};
console.log(v1);
//undefined
console.log(obj.
get
);
//undefined
typeof
v1;
// "undefined"
typeof
v2;
// "undefined"
typeof
obj.
get
;
// "undefined"
5、null
null类型也只有一个值:null , 表示一个变量中没有包含有效数据。null在这里意为`空值`、`空对象`的意思,更确切的说,一个被赋值为null的变量没有保存有效的数值、字符串、布尔、数组或对象等,可以通过给一个变量赋值为null来清空变量中的内容。产生null的原因只有一个:即对一个变量显式的赋值为null 。
var
p =
null
;
console.log(p);
//null
typeof
p ;
// "object"
typeof
null
;
// "object"
另外,需要注意的是,typeof null 应该返回`null`,但实际上返回的是`object`,这是一个历史遗留问题,并没有其他原因。
6、Object,Function,Array,Date,RegExp
这些对象在JS中都属于引用类型, 除Function之外,通过typeof检测其数据类型返回的都是object, 如果要判断对应的具体类型,则可以通过Object.prototype.toString来获取。
var
a = {};
var
b =
new
Function();
var
c = [];
var
d =
new
Date();
var
e =
new
RegExp();
typeof
a;
Object.prototype.toString.call(a);
//[object Object]
typeof
b;
Object.prototype.toString.call(b);
//[object Function
]typeof
c;
Object.prototype.toString.call(c);
//[object Array]
//判断数组的方法
console.log( Object.prototype.toString.call(c)=="[object Array]")//trueconsole.log(Array.isArray(c));//true
typeof
d;
Object.prototype.toString.call(d);
//[object Date]
typeof
e;
Object.prototype.toString.call(e);
//[object RegExp]
- JS六大数据类型详解
- 详解JS数据类型
- 详解JS数据类型
- 详解js的六大数据类型
- 详解js的六大数据类型
- 详解js的六大数据类型
- Js 数据类型详解和各种数据类型之间的运算
- js数据类型
- js数据类型
- js数据类型
- js 数据类型
- js数据类型
- JS数据类型
- js数据类型
- JS数据类型
- JS数据类型
- js数据类型
- js 数据类型
- asp.net网站部署在云服务器windows server 2008上
- 19个常用的JavaScript简化编码优化小技巧
- log4j .properties
- 人类对敏捷开发与软件工程的三种认知与行为
- Eclipse重新定位svn资源库
- 详解JS数据类型
- Java设置session超时(失效)的三种方式
- Java线程池入门必备
- JSP中的异常处理
- 剑指offer——二叉搜索树与双向链表
- 模式识别感知器算法C++写的
- 对万向节锁的理解
- TCP/IP协议中的端口
- 几款流行开源ESB总线简介