ECMAScript的变量是松散类型的,所谓松散类型就是每个变量可以用来保存任何类型的数据,可以理解成每个变量仅仅是一个占位符。
ECMAScript有5种基本数据类型undefined null boolean string number 一种复杂数据类型object。object本质由一组无序的键值对组成,ECMAScript不支持任何创建自定义类型的机制,所以所有值都是这6种数据类型之一。(ES6新增Symbol类型)
typeof操作符
检测变量的数据类型
typeof 'this is string' // string
typeof 12 // number
typeof x // undefined
typeof true // boolean
typeof NaN // number
Undefined类型
//在使用var 声明变量但未对其初始化时,这个变量值就是undefined
var x;
alert(x == undefined) // true
//显式声明
var x = undefined;
alert(x == undefined) // true
Null类型
null值表示一个空对象指针
undefined值是派生自null值的,所以
null == undefined // true
Boolean类型
该类型两个值:true和false
在ECMAScript中true和false是区分大小写的,也就是说True和False以及其他混合大小写形式都不是Boolean值
可以调用转型函数Boolean()
var x = “string”
var booleanX = Boolean(x); // true
Number类型
var int1 = 55; //整数
var int2 = 076 ;//八进制(严格模式下无效)
var int3 = 0xA; // 十六进制NaN(Not a Number)特殊的数值
数值转换 Number() parseInt() ParseFloat()
String类型
字符串由双引号(”)单引号(‘)表示,有效写法:
var s1 = “string”;
var s2 = ‘string’;ECMAScript中的字符串是不变的,也就是说字符串一旦创建,它们的值就是不能改变。要改变某个变量保存的字符串,首先要销毁原来的字符串,然后再用另一个包含新值得字符串填充该变量
转换为字符串 toString()
Object类型
ECMAScript中的对象其实就是一组数据和功能的集合。对象可以通过执行new操作符后跟要创建的对象类型的名称来创建。
object{Function Array Date}
var obj = new object();
Symbol类型
ES6出现的第七种类型
typeof Symbol() === ‘symbol’
每次调用Symbol()返回唯一symbol
使用Symbol来避免代码冲突