自动数据类型转换
- 任何类型的数据和字符串类型数据做相加操作的时候。其他数据类型会自动转换称为字符串类型。字符串拼接。此时的相加操作不再是数学意义上的加法,而是表示拼接的意思。
如果其中一个操作数是字符串的时候,+号叫做字符串的拼接。
var t = "您" + "好"; //您好
var t = "1" + 1; //11
var t = "h" + true; //htrue
var t = "h" + undefined; //hundefined
查看JS语法错误:
火狐 fireBug
谷歌 chrome控制台
- 任何数据除了和字符串做相加运算外,先要将字符串转成数字再进行运算
(1)与NaN做算数运算的结果始终都是NaN,包括NaN本身和NaN做运算结果也为NaN
(2)字符串如果是纯数字字符串转成数字,否则会转换成NaN
var t = 1 - "2"; //字符串“2”转成了数字2
var t = 1 - "2a"; //NaN
var t = NaN - NaN; //NaN
- 任何其他数据类型除了和字符串做相加操作外,与数字类型做算数运算的时候,其他数据类型都会自动的转换成数字
var t = 1 * "1"; //1
var t = 1 / "1"; //1 number
var t = 1 + true; //2
var t = 1 + false; //1
var t = 1 + null; //1
var t = 1 + undefined; //NaN
强制数据类型转换
- 强制数据类型转换转换成布尔值
通过方法Boolean()进行强制数据类型转换,作用是将别的数据类型转换成布尔值
(1)数字0转成布尔值为false,所有非0的数字转成布尔值都为true
(2)空字符串转成布尔值为false,所有非空字符串转成布尔值为true
(3)null和undefined转成布尔值都是false
var t = Boolean(1); //true
var t = Boolean(0); //false
var t = Boolean(-1); //true
var t = Boolean(""); //false
var t = Boolean("hello"); //true
var t = Boolean(null); //false
var t = Boolean(undefined); //false
- 强制数据类型转换转换成数字
1.Number() 将别的数据类型转成数字
(1)布尔值 true => 1 false => 0
(2)字符串 纯数字的字符串 => 对应的数字,否则NaN
(3)特殊数据类型 null => 0 undefined => NaN
var t = Number(true); //1
var t = Number(false); //0
var t = Number("20"); //20
var t = Number("20a"); //NaN
var t = Number(null); //0
var t = Number(undefined); //NaN
var t = Number(true); //1
2.parseInt() 兼容Number的功能,取整
var t = parseInt("3.14"); //3 number
3.parseFloat() 取浮点数 带小数的数字 可以将别的数据类型转换成数字
var t = parseFloat("3.14"); //3.14 number
- 被除数为0的情况
var t = 1 / 0; //Infinity(无穷大)
var t = -1 / 0; //-Infinity(无穷小)