目录
(接上篇)
Boolean:布尔值,只有true和false两个值
Null:空值,使用typeof检查null值时会返回object
Undefined:未定义,当声明一个变量,但是并不给变量赋值时,它的值就是undefined,使用typeof检查时会返回undefined
Object:对象
前五种属于基本数据类型,Object属于引用数据类型
强制类型转换:
指将一个数据类型强制转换为其他的数据类型
类型转换主要指将其他的数据类型转换为String Number Boolean
1.将其他数据类型转换为String
方式一:调用被转换数据类型的toString()方法,但是注意:null和undefined这两个值没有toString()方法
var a=123;
a.toString(); //该方法不会影响原变量,只会将转换的结果返回,a依旧是number类型
//a=a.toString(); a变为string类型
方式二:调用String函数,并将被转换的数据作为参数传递给函数,对于Number和Boolean实际上就是调用的toString()方法
var a=123;
String(a); //a依旧是number类型
//a=String(a); a变为string类型
对于null和undefined,它会直接转换为“null”和“undefined”
var a=null;
a=String(a); //a变为string类型,值为“null”
2.将其他数据类型转换为Number
方式一:使用Number()函数
字符串转换为数字类型时,如果是纯数字字符串,则直接将其转换为数字
var a=”123”;
a=Number(a); //a变为number类型
如果字符串中有非数字的内容(例如字母),则转换为NaN
var a=”123abc”;
a=Number(a); //a变为number类型,值为“NaN”
如果字符串为空,则转换为0
var a=” ”;
a=Number(a); //a变为number类型,值为“0”
布尔类型转换为数字类型时,如果值为true则变为1
var a=true;
a=Number(a); //a变为number类型,值为“1”
如果值为false则变为0
var a=false;
a=Number(a); //a变为number类型,值为“0”
Null转换为数字类型时,值变为0
Undefined转换为数字类型时,值变为“NaN”
方式二(针对字符串):
parseInt()将字符串中有效的整数取出,转换为Number(也可用于浮点数取整)
var a=”123.123px123px”;
a=parseInt(a); //a的类型变为number,值为“123”,读到非数字字符时停止
parseFloat()将字符串中有效的浮点数取出,转换为Number
var a=”123.123.123px”;
a=parseFloat(a); //a的类型变为Number,值为“123.123”
对非String类型使用这两个函数,会先将其转换为String,然后再操作
其他进制的数字:
在JS中,如果需要表示16进制的数字,则需要以0x开头
var a=0x10; //十六进制的10输出为十进制,值为16
在JS中,如果需要表示8进制的数字,则需要以0开头
var a=070; //八进制的70输出为十进制,值为56
在JS中,如果需要表示2进制的数字,则需要以0b开头,但不是所有浏览器都支持。像“070”这种字符串,有些浏览器会当成8进制解析,有些会当成10进制解析。在强制类型转换时,可以在parseInt()中传递第二个参数来指定数字的进制。
var a=”070”;
a=parseInt(a,10); //作为十进制转换,a的值为70
a=parseInt(a,8); //作为八进制转换,a的值为56
3.将其他数据类型转换为Boolean
方式一:
使用Boolean()函数,数字转换为布尔类型时,除了0和NaN为false,其余都为true
字符串转换为布尔类型,除了空串(空格不是空串)为false,其余都是true
null和undefined转换为布尔类型都是false,对象会转换为true
算数运算符(运算符也叫操作符):
当对非Number类型的值进行运算时,会将这些值转换为Number然后再运算,true为1,false为0,null为0,任何值与NaN(undefined)做运算都得NaN
加法+:
如果对两个字符串进行加法运算,则会将两个字符串拼接为一个字符串
var a=”123”+”456”; //a的值为123456
任何数值与字符串做加法运算,都会先转换为字符串,然后再和字符串做拼串的操作
var a=123+”1”; //a的值为1231
var b=true+”hello”; //b的值为truehello
var c=123+””; //c的值为123,此方法也可以用于将任一数据类型转换为String,这是一种隐式的类型转换,实际上它也是调用的String()
var d=1+2+”3”; //d的值为33,程序从前向后读,读到引号时才会进行拼接
var e=”1”+2+3; //e的值为123
减法-,乘法*,除法/:
任何数值与字符串做减法运算,都会先转换为数值,然后再相减
var a=100-”1”; //a的值为99,与加法不同
任何值运算时都会自动转换为Number
var a=2*”8”; //a的值为16
var b=123-”0”; //b的值为123,类型为number,与加法类似,我们也可以通过“-0”、“*1”、“/1”进行隐式类型转换
取模%(取余):
var a=9%4; //a的值为1
一元运算符:
正号+ 负号-
对于非Number类型的值,会先将其转换为Number,然后再运算
var a=true;
a=-a; //a的值为-1;
可以对其他数据类型使用“+”,将其转换为number,原理与Number()相同
var a=18;
a=+a; //a的类型为number
var b=1++”2”+3; //b的值为6
自增++ 自减--
可以影响原变量的运算符
a++的值等于原变量的值,++a的值等于新值,自减类似
var a=1;
a++; //a的值变为2,a++的值为1
var b=1;
++b; //b的值变为2,++b的值为2
var c=20;
var d=c++ + ++c + c; //d=20+22+22
(作者观看的学习视频:B站尚硅谷)