JavaScript数据类型
js数据类型属于动态类型(弱类型),不用提前声明变量类型,类型会在运行时自动确认(意味着不同的数据类型可以赋值给同一个变量)。
js数据类型分为以下两大类:
基本类型:Undefined,Null,Boolean,Number,String,Symbol。
引用类型:Object,Array、Function,还有两个特殊的对象:正则(RegExp)和日期(Date)。
note:其中Null与Undefined不可拥有方法。
1)Undefined
表示定义了变量但是没有赋值,值为undefined,表示缺少值。
例如:
var a; console.log(a); // undefined
2)Null
表示空值,其实null与undefined几乎没差别,js语言中出现两个表示“无”的值,这与当时js的历史有关(相关可查阅资料)。
相同点:在if判断中都为false,相等运算符(==)会判断两者相等。
两者的区别:其实null值一般被用做定义一个“空”对象,转为数值时会自动变0,而undefined转为数值时会变“NaN”。
例如:
var a, b = null; console.log(a, b); console.log(Boolean(a), Boolean(b)); console.log(a == b, a === b); console.log(Number(a), Number(b)); // 结果 undefined null false false true false NaN 0
3)Boolean
表示布尔类型,只有true和false两个值,一般用作逻辑判断。
4)Number
表示数字类型,根据 ECMAScript 标准,JavaScript 中只有一种数字类型:基于 IEEE 754 标准的双精度 64 位二进制格式的值。它并没有为整数给出一种特定的类型。除了能够表示浮点数外,还有一些带符号的值:+Infinity
,-Infinity
和 NaN
(非数值,Not-a-Number)。
js中只有一种数据类型,可以使用小数点也可不使用。
5)String
用于存储字符(例"hello world")的变量,字符串中可使用引号,只要与包含字符串的引号不同即可。
6)Symbol
Symbol引入的原因是由于对象定义的属性名都是字符串,假如我们引用一个对象,想给对象添加新属性,那么我们新添加的属性就很可能与现有属性冲突从而导致现有属性被覆盖,这显然不是我们想要的结果,所以ES6引入了Symbol类型,可以保证属性的唯一性。Symbol类型代表的是独一无二的值,所以对象的属性名现在有两种类型,一种是字符串,另一种就是独一无二的Symbol类型,Symbol值通过Symbol()函数生成:
例如
var data = Symbol(); console.log(typeof data); // symbol
更多详细内容请点击https://www.cnblogs.com/lqw007/p/12162657.html
7)Object
表示对象,用花括号表示,对象可定义属性,属性以名称和值对(key: value)的形式存在,以逗号分隔。
特点:对象具有唯一性(使用内存地址来体现),对象具有状态和行为。
例如
var objLily = { name: 'lily', sex: 'female' } var objJone = { name: 'Jone', sex: 'male' } console.log(objLily === objJone); // false
由于每个对象存储的内存地址不同,所以就算对象的属性完全相同也不相等。