JavaScript中的数据类型可以分为两大类:基本数据类型和引用数据类型。基本数据类型包括:number、string、boolean、null、undefined、symbol。引用数据类型包括:侠义对象(object)、函数、数组。其中基本数据类型中的symbol是在ECMAScript6中新增的一种数据类型。
JavaScript语言是弱类型语言或者说是一种动态类型语言:声明变量时不用指定变量的类型,JavaScript会在运行时自动判断变量的类型,这就意味着一个变量可以保存多种类型。
var a;
a = 0; //a 在这里是number
a = "1"; //a在这里是string
a = true; //a 在这里是boolean
明显不同于Java等语言,Java在声明变量时会指定变量的类型,以后如果赋值为其他类型会报错。
基本数据类型是按值访问的,值是不可变的。
引用数据类型是按引用访问的,值是可以修改的。
var a = 1;
var b = 1;
console.log(a === b);//这里输出:true
a = b;
b = 2;
console.log(a);//这里输出1,a的值不可变
再看下面引用类型的例子:
var a = {};
var b = {};
console.log(a===b); //这里输出false
a = b;
b.name = "hello";
console.log(a.name);//这里输出hello
引用数据类型变量其实保存的是对象在内存中的引用地址,上面例子中把b赋值给a 就是把b中保存的对象引用地址赋值给了a,所以a和b指向了同一个对象。
基本数据类型和引用数据类型可以用一个简单的举例说明:
房间1的门牌号是a,房间2的门牌号是b,如果是基本数据类型:a和b数据就在对应的房间中的,通过门牌号a和b就可以直接找到对应的数据;而如果是引用数据类型:门牌号为a和b的两个房间中保存的是想要找的对象的地址,拿到这个地址之后再去其他房间找对应的对象。
Number:
JavaScript中只有一种数字类型,包括了整数、小数。
其他的数据类型可以通过Number()、parseInt()、parseFloat()等转换为Number。
var str = "10";
console.log(Number(str));//输出数字10
var str1 = "10.1";
console.log(parseInt(str1));//这里输出10,会忽略小数位
console.log(parseFloat(str1));//这里输出10.1
对于把boolean转换为number:如果使用的是parseInt()或者parseFloat()得到的是NaN,而如果使用Number(),true得到的是1,false得到的是0。
var b = true;
console.log(parseInt(b));//Nan
console.log(Number(b));//数字1
String:
JavaScript中的字符串有两种代码实现方式:" " 或者 ’ ’ ;并且可以互相且套。
var str1 = "abc";
var str2 = 'abc';
var str3 = ”abc'123'“;//这里是字符串abc'123'
var str4 = 'abc"123"';//这里是字符串abc"123"
var str5 = "abc\"123\"";// ""中且套" "必须加转义字符 \ ;不然会报错
var str6 = 'abc\'123\'';// ''中且套'' 也需要加转义字符。
其他数据类型可以通过toSting()函数转换为String类型,而且toString()可以携带参数表示转换为对应的进制字符串。
var intA = 10;
console.log(intA.toString());//这里输出字符串10
console.log(intA.toString(2));//这里输出10的二进制字符串"1010";
Boolean:
Boolean是JavaScript中逻辑实体。只有两种值:true或者false。
其他数据类型可以通过Boolean()函数转换为boolean数据类型,其中所有的字符串转换为boolean的时候都是true;数字中除了0和特殊的NaN会转换为false外,其他都是true;
var a = 1;
console.log(Boolean(a));//这里输出true;
var b = 0;
console.log(b);//这里输出false
var c = "abc";
console.log(c);//这里输出true
console.log(Nan);//false
Undefined:
Undefined类型只有一个值:undefined。所有声明后没有赋值的数据都是undefined。
var a;
console.log(a);//undefined
在JavaScript中可以通过 typeof 来判断当前数据的类型:
var a = 10;
console.log(typeof a); // number
var b = "10";
console.log(typeof b); // string