基本数据类型「In JavaScript」
基本数据类型
JavaScript 在声明变量时不需要声明其类型,赋什么值就是什么类型。
JavaScript 的基本数据类型有五种。
分别是:
Number类型,默认值为 0。
var a = 1;
var b = Number.MAX_Value;//最大值
var c = Number.MIN_Value;//最小值
Boolean类型,默认值为 false。
String类型,默认值为 "" ,双引号还是单引号没有区别。
Undefined类型,只声明不赋值即为 Undefined。
var a;
console.log(a); //undefined
Null类型,声明变量并赋值 null 即得到 Null 类型。
var a = null;
Number类型与NaN
我们经常会看见 NaN 这个单词,刚开始我以为它也是一种数据类型。其实并不是,其全写是 Not a Number,表示不是数字。
现在我理解为 NaN 为 Number 的一种衍生品,只有与进行 Number 类型数据有关的操作并且发生错误时才会出现 NaN 。
比如说:
//有减号运算,本来应该隐式转换成Number类型的,但是由于字符串是hello,就会报错NaN
console.log("hello" - 100);
为了避免出现 NaN ,我们应该了解其他基本类型与 Number 进行运算后会有什么结果。
String 类型
Number 类型与 String 类型进行加法,得到的结果是 String 类型的(字符串拼接,String类型的隐式类型转换,很抱歉这里先讲了,下面马上你也将看到这部分的知识)。所以也就无所谓 NaN 的问题了。
而如果是其他运算,比如减乘除,如果 String 类型里的值是数字,那么就可以成功运算,结果隐式类型转换成 Number,不会出现NaN,否则 NaN。
console.log("hello" - 100);//NaN
console.log("100" - 99);//1
Boolean 类型
Boolean 如果参与计算,true 是当做 1 来看的,false 是当 0 来看的。不会出现 NaN 的情况。
console.log(true + 1);//2
console.log(false + 1);//1
Undefined 类型
Undefined 类型不能转换成数字,因此参与加减乘除的话,必定是 NaN。
var a;
console.log(a + 1);//NaN
Null 类型
Null 代表空,如果与数字进行加减乘除,那么得到的还是数字。
思考 Null 与 Undefined :
Null代表空,相当于什么也没有因此对于其与数字相加来说等于数字本身。
Undefined代表未定义的,相当于是有东西的,但是没说具体是什么东西,所以其与数字相加之后就是一坨东西与数字相加,结果肯定是NaN。
如何判断其他类型是否为数字?即是否能与数字正常相加减。
isNaN() 用来判断非数字,并返回 true 或者 false 。
如果返回 true,代表是 NaN 即不能转换成数字。
如果返回 false,代表不是 NaN 即能转换成数字。
注意,这里是 false 才代表能转换成数字!!
数据类型转换
五大基本数据类型是可以互相转换的。
转换成 String 型
转换成字符型有三种方法。
1. toString() 方法
通过使用 变量.toString() 方法将变量转换成字符型。
值得一提的是,并不是其他所有数据类型都可以使用这个方法。
只有 Number 和 Boolean 这两种数据类型才可以使用,Undefined 和 Null 是不可以使用的。
var num = 1;
var String1 = num.toString();//"1"
var bol = true;
var string2 = bol.toString();"true"
var und = undefined;
var string3 = und.toString();//报错
var nul = null;
var string4 = nul.toString();//报错
2. 使用 String() 方法
对于其他四种类型,String() 方法都是适用的。
var und = undefined;
var string1 = String(und);//"undefined"
var nul = null;
var string2 = String(nul);//"null"
3. 使用隐式类型转换
任何类型的数据与 String 类型的数据相加之后得到的结果都是 String 类型的,这称为隐式类型转换。
var num = 1;
var result = "2" + num;//"21"
转换成 Number 型
转换成 Number 类型有四种方法。
1. 使用 parseInt 方法
此方法的结果是输入参数的整数,直接截取出整数,后面的小数不要。
var num1 = "666.666";
var string1 = parseInt(num1);//666
//带有单位的数据也能直接获取
var num2 = "666.666px";
var string2 = parseInt(num2);//666
2. 使用 parseFloat 方法
此方法相对于上一个方法来说完全一样,但是可以获取小数。
3. 使用 Number() 方法
Number() 对数据进行强制类型转换,注意,带单位的数据并不能使用这个方法。
var num1 = "666.666";
var num2 = "666.666px";
var str1 = Number(num1);//666.666
var str2 = Number(num2);//NaN
4. 隐式类型转换
除了加法之外,其他数据类型进行减、乘、除、取余运算,结果都会自动转换成 Number 类型。
console.log("123" - "12");//Number类型111
console.log(123 - "12");//Number类型111
转换成 Boolean 型
转换成布尔型只有一个方法,Boolean()。
0、NaN、""、null,undefined 转换之后是 false。否则都是 true。
即只有代表空、或者否定的才会被转换成 false。
typeof 获取数据类型
typeof 关键字可以获得变量的数据类型。
使用方法:
var age = 18;
console.log(typeof age);