JavaScript的数据类型分类
- 基本数据类型:Number,String,Boolean
- 特殊数据类型:Null,Undefined,NaN
- 引用数据类型:数组,对象,函数等等
我们可以使用typeof函数来检测一个数据的数据类型
<script >
var message = "some string";
console.log(typeof message); //"string"
console.log(typeof 95); //"number"
console.log(typeof typeof 95); //string
</script>
所有的数据类型都属于String类型
例如number,Boolean,string这些类型再次使用typeof检测都是属于Sting类型的
undefined
Undefined 类型只有一个值,即特殊的 undefined
在使用 var 声明变量但未对其没有赋值时,这个变量的值就是 undefined
Null
null类型是第二个只有一个值的数据类型,这个特殊的值是 null
undefined和Null的区别
null
- 用来描述空值
- typeof null:返回的是字符串object
- 通常我们是吧null看成它自有类型的唯一成员
undefined
- undefined表明只声明了变量没有赋值
- 如果这个函数没有返回值,则返回undefined
- typeof undefined返回的字符串是undefined
- 双等号认为null和undefined是相等的,但是三等号则返回false
Boolean
Boolean 类型是 ECMAScript 中使用得最多的一种类型,该类型只有两个字面值: true 和false
注意:Boolean 类型的字面值 true 和 false 是区分大小写的。也就是说,True 和 False(以及其他的混合大小写形式)都不是 Boolean 值,只是标识符
Number
用来表示整数和浮点数值(浮点数值在某些语言中也被称为双精度数值)。为支持各种数值类型, ECMA-262 定义了不同的数值字面量格式。
由于内存的限制, ECMAScript 并不能保存世界上所有的数值。 ECMAScript 能够表示的最小数值(绝对值)保存在 Number.MIN_VALUE 中——在大多数浏览器中,这个值是 5e-324;能够表示的最大数值(绝对值)保存在Number.MAX_VALUE 中——在大多数浏览器中,这个值是 1.7976931348623157e+308。
如果某次计算的结果得到了一个超出 JavaScript 数值范围的值,那么这个数值将被自动转换成特殊的 Infinity 值。具体来说,如果这个数值是负数,则会被转换成-Infinity(负无穷),如果这个数值是正数,则会被转换成 Infinity(正无穷)
NaN
即非数值(Not a Number)是一个特殊的数值,这个数值用于表示一个本来要返回数值的操作数未返回数值的情况(这样就不会抛出错误了)
注意:只有0除以0才会返回NaN,正数除以0返回Infinity,负数除以0返回-Infinity
NaN自身有两个特点
- 任何涉及NaN的操作都会返回NaN,这个特点在多不计算中有可能导致
- NaN与任何值都不相等,包括NaN本身
String
字符串可以由双引号(")或单引号(')表示
var name = "lili";
var name1 = 'ben';
注意:用双引号就只能用双引号,用单引号就只能用单引号,不可以一半用单引号,一半用双引号
object
ECMAScript 中的对象其实就是一组数据和功能的集合。对象可以通过执行 new 操作符后跟要创建的对象类型的名称来创建。而创建 Object 类型的实例并为其添加属性和(或)方法,就可以创建自定义对象
var o = new Object;//var o={}
//为实例添加属性并赋值
o.name = "张三";
o.age = 20;
var o={
name:"张三",
age:20
}
var person = {
name:'张三',
age:20,
say:function(){
console.log('大家好');
}
}
对象之间用逗号隔开,最后一个对象就不需要逗号了
通过点来访问对象的属性:person.name;
通过点来访问对象的方法:person.say();
原始值与引用类型
- 不可变的原始值
- 任何方法都无法更改一个原始类型的值:数字,字符串,布尔值,null,undefined
- 对字符串类型的修改操作,只会返回一个新的字符串,原始字符串不会被修改
- 原始值在做比较时,只要值相等,他们就是相等的
- 可变的对象引用:数组,对象,函数等等
- 对象即引用类型的值是可以修改的