一、数值类型(Number)
JavaScript的数值类型变量可以存储一个数,包括整数、小数、浮点数、十六进制数、八进制数、科学记数法等,例如:
var n01 = 12; // 整数
var n02 = 0.12; // 小数,浮点数
var n03 = 0xFFFF; // 十六进制数
var n04 = 0O12; // 八进制数
var n05 = 3e4; // 科学记数法
Number.MAX_VALUE为数值类型的最大值,Number.MIN_VALUE为数值类型的最小值,最大值和最小值也不是固定的,根据浏览器不同而不同。
超出Number所能表示的范围的数值返回Infinity,NaN是数字类型,但是它不是一个数值,NaN表示Not a Number,可以使用isNaN()判断一个变量是否是NaN(JavaScript的概念总是设计得奇奇怪怪,例如还有下面的undefined和null,无疑是将问题变复杂了)。
另外要注意的是,JavaScript不能精确地表示小数,仅仅是近似值,例如0.3-0.2==0.2-0.1返回false,所以在小数处理上要小心,如果要比较小数,可以通过一个误差来判断,例如if((0.3-0.2) < 0.0001)。
若要将一个字符串转为数字可以使用parseInt()函数。
二、布尔类型(Boolean)
布尔类型只有两个值:true和false,这个简单的类型在开发中常常被用到,其中一个就是值的比较了,值的比较涉及到双等号===和三个等号的全等号===,这两中比较方式有什么区别呢?
双等号==,表示仅仅比较等号两边的数据值。
全等号===,表示同时比较等号两边的数据值和类型。
var number = 18;
var age = "18";
if(number == age)
console.log("number == age");
else
console.log("number !== age");
if(number === age)
console.log("number === age");
else
console.log("number !=== age");
/**
* 输出:
* number == age
* number !=== age
*
*/
三、字符串类型(String)
字符串类型的值使用双引号或单引号将一个字符串引起来,使用+号可以连接字符串,其它类型转为字符串使用方式toString(),若使用到特殊字符,例如换行符等,这种需要使用转义字符,常见的转义字符有:
样式 | 含义 |
\123 | 1~3位八进制数据所表示的字符,如\256 |
\uF890 | 4位十六进制数据所表示的字符,如\u0014 |
\’ | 单引号字符 |
\\ | 反斜杠字符 |
\t | 垂直制表符 |
\r | 回车 |
\n | 换行符 |
\b | 退格 |
\f | 换页 |
四、未定义类型(undefined)
未定义类型是一种类型,需要强调它是一种数据类型,它表示一个未定义的变量,空值,注意变量的声明和定义是不同的,var value为声明变量,但是没有分配内存空间这时候typeof(value)返回undefined,var value = 12为定义一个变量并分配相应的内存空间,这时候typeof(value)返回number。
undefined产生的情况一般是声明一个变量但未对其赋值,或者对未声明的变量进行操作,或者显式地给变量赋值undefined,试图访问没有返回值的函数的返回值也会返回undefined。
例子:
var value;
var value_01 = undefined;
var fn = function(value){};
console.log(typeof(value)); // 已声明但未定义
console.log(typeof(message)); // 未声明
console.log(value_01); // 显式赋值为undefined
console.log(fn()); // 函数没有返回值
// 全部输出:undefined
五、null类型
Null并不是一种数据类型!它是一个值,引用类型的的其中一个值,只不过这个值为null,即为空值,所以在数值上和undefined的数值是相等的,但是类型不同,null是object引用类型。那么undefined和null根本上有什么区别呢?主要体现在内存上,编程必须分析内存,看别人解析半天好像也没弄懂它们的区别,JavaScript的设计缺陷。看下图,变量a此时就是undefined,值为空,b为object引用类型,若此时没有值,则为null,所以undefined是一种数据类型,而null只是一种值,若没有undefined类型,估计也就自然明白null是object的一个空值了。
看例子:
console.log(typeof(undefined));
console.log(typeof(null));
console.log(null == undefined);
console.log(null === undefined);
/**
* 输出:
* undefined
* object
* true
* false
*/
六、函数类型(function)
在JavaScript中,函数也是一种类型,但其实函数也是对象,函数也有自身的属性和方法,属性:length表示方式接收的参数个数,prototype保存对象实例的所以方法,apply()函数用户设置函数内部的this变量,默认为window,apply函数接受两个参数,一个是函数的运行作用域,另一个是参数数组。Call()函数用于调用,bind()方法会创建一个函数实例,this被绑定到传给bind函数的值。
实例:
var coder = {};
coder.name = "Visual";
var run = function(name){
console.log(this.name);
}
console.log(run.length);
console.log(run.prototype);
var runner = run.bind(coder);
runner();
/**
* 输出:
* 1
* {constructor: ƒ}
* Visual
*/
七、引用类型(Object)
JavaScript中,一切皆对象,引用类型的定义形式和使用实例如下:
var song = {}; // 或使用 var song = new Object
song.title = "The Key";
song.singer = "Eason";
song.lyrics = "Far away from me";
console.log(song.title);
console.log(song.singer);
console.log(song.lyrics);
/**
* 输出:
* The Key
* Eason
* Far away from me
*/