一、原始值和引用值
原始值:存储在栈(stack)中的简单数据段,它们的值直接存储在变量访问的位置。
引用值:存储在堆(heap)中的对象,存储在变量处的值是一个指针,指向存储对象的内存处。
二、原始类型:(基本数据类型)
undefined、null、boolean、number、string
三、typeof运算符(判断基本数据类型)
输出结果:undefined、boolean、number、string、object
1、undefined
当一个未声明的变量和一个声明但并未初始化的变量使用typeof都会输出undefined,如下代码所示
var value1; //var value2 console.log(typeof value1);//undefined console.log(typeof value2);//undefined
PS:当函数无明确返回值时,返回的也是undefined。
2、null类型
undefined派生自null。null表示尚未存在的对象。
3、number类型
(1)八进制:首数字为0;
(2)十六进制:首数字为0x;
(3)ECMAScript默认把6个或6个以上的前导0的浮点数转换为科学计数法;
(4)几个被定义为Number类型的特殊值:
Number.MAX_VALUE
Number.MIN_VALUE
(5)isFinit()方法:确定该数不是无穷大
(6) NaN (非数),特性:不能用于算数计算;
与自身不相等;
(7) isNaN()方法:确定是否为NaN;
4、String类型
首字符从位置0开始,字符串最后一个字符的位置是字符串的长度减1;
四、转换
1、转换成字符串:toString()方法
Boolean类型:输出“true”或“false”
Number类型:根据两种模式:
默认模式:相应数字值得字符串输出;
基模式:输出不同进制形式数字对应的字符串;
2、转换成数字
只有对string类型调用这些方法才能正确运行,对其他类型返回NaN;
parseInt():
运行机制:从位置0开始查找判断是否为有效数字,如果不是返回NaN,如果是则继续向后查找,直到找到非有效数字,将之前的字符串转换为数字。
PS:parseInt()方法有基模式,将二进制、八进制、十六进制的字符串转化为整数,由第二个参数指定。
parseFloat():
运行机制:从位置0开始查找每个字符,直到出现第一个非有效字符,将之前的字符串转化为数字。第一个出现的小数点是有效字符,第二个是无效的。
PS:字符串必须以十进制形式表示浮点数,不能用八进制或十六进制形式,没有基模式。
3、强制类型转换
Boolean(value):
(1)转换成Boolean类型;
(2)转换的值至少是有一个字符的字符串、非0数字或对象时,返回true;
(3)转换的值为空字符串、数字0、undefined、Null,返回false;
Number(value):转换成数字;
(1)与parseInt(),parseFloat类似,但转化的是整个值,不是部分值。如果字符串值能完整的被转换,Number()将判断调用parseInt()还是parseFloat()。
String(value):将任何值转换成字符串;