javascript有六种数据类型,分别为undefined、null、number、string、Boolean、object,前面的五种是基础数据类型,也称之为原始类型,也就是无法再细分的基本类型,object则是复杂数据类型,其中通常是不止一种数据类型,除此之外在ES6当中又新增加了一种symbol,表示为唯一的值,这个还没有搞懂暂时涉及。
undefined:表示还没有定义
null:表示为‘空‘
number:整数或者小数
string:字符串文本
boolean:布尔值,true或者false
object:表示一个对象,键值对
Undefined与Null
1.当你通过var声明一个变量并且没有对这个变量进行初始化的时候,那么该变量的数值默认为undefined
var a;
console.log(a);// undefined
此外当你调用函数的时候没有返回值的时候也会默认返回一个undefined
function fn() {}
console.log(fn()); // undefined
2.未声明和未初始化还是有区别的,如下,a未初始化,b则是未声明,系统会报错
var a;
console.log(a);// undefined
console.log(b);// ReferenceError: b is not defined
3.null表示一个空对象的指针,假如你定义一个变量未来将用于存放对象,最好初始化为null
var a = null;
undefined与null的区别在哪里呢?
我们可以这样理解,null表示为有内容,而这个内容就是为空,而undefined表示的为未定义,还没有想好要放什么,假设我们面前放着这一张纸张想要画画,如果使用null,意思就是这张纸的画面就是一片空白,而如果使用了undefined则是我放着这一张纸,但是还没想好画什么呢,就先这样放着吧。
但是如果你使用==
来进行对比你会发现返回一个true
,并且在if
语句的()
当中两者都会被转换成false
.
Boolean
布尔值只有两个值:true
表示真false
表示假,区分大小写,通常以下情况下会出现布尔值,
逻辑运算符: &&、||、!
运输符: ==、!=、===、!==、>、>=、<、<=
if语句的()当中自动转化为boolean值
此外还可以使用Boolean()
来进行转换,除了undefined、null、false、0、NaN、""或‘‘(空字符串)
会被转化为false
之外,其余都会被转换为truw
。
Number
1.JavaScript的所有数字都是以64位浮点数形式储存,由于二进制浮点数的算法原因,我们还能看到以下情况
console.log(0.1 + 0.2 ); // false
实际得到的数值是略微大于0.3的,具体可以看这里
2.除了十进制外还可以表示为八进制、十六进制、二进制
// 八进制:有前缀0的数值,或者有前导0、且只有0-7
var num8 = 070; // 56
// 十六进制:有前缀0x或0X的数值,有且只有0-9,a-f
var num16 = 0X3e; // 62
// 二进制:有前缀0b或0B的数值,有且只有0,1
var num2 = 0B10; // 2
3.number还可以使用科学计数法进行表示
console.log(3e13); // 30000000000000
console.log(3e-3); // 0.003
4.JavaScript的Number对象提供可以表示的最大最小是
Number.MAX_VALUE // 1.7976931348623157e+308 2的1024次方
Number.MIN_VALUE // 5e-324 2的-1023次方
当你超过之后就会发生溢出,编程Inifinity,如果为负数则是-Inifinity,
5.NaN表示为非数值,当本来要返回数值的操作未返回数值的情况,例如数字同字符串的-
console.log(‘a‘ - 10); // NaN
当然要是使用+
就不会返回NaN,因为会转化为字符串。
console.log(‘a‘ + 10); // a10
任何同NaN的操作都会返回NaN
console.log(NaN + 10); // NaN
并且NaN同任何值都不相等,包括自身。
console.log(NaN === NaN); // false
6.+0与-0
两者通常情况下都是相等的,除了作为分母的时候
console.log((1 / +0) === (1 / -0)); // false
7.与数值相关的全局方法有
parseInt():用于将字符串转化为整数
parseFloat():转换为浮点数
isNaN():是否为非数值
isFinite():是否为正常数值
具体转化规则行查询文档,这里需要注意的是parseInt()有第二个参数,表示的是被解析字符串的进制
parseInt(‘1000‘, 2) // 8
parseInt(‘1000‘, 8) // 512
String
1.字符串通常用""
,‘‘
表示,可以在单引号当中放双引号,反过来也可以,需要注意的是开头结尾要相同
console.log(‘a string"); // 报错 nvalid or unexpected token
2.有一些特殊字符不可以直接在字符串当中打出来,需要通过转义符才行