一、强制转化为布尔类型
- 什么时候转化
- Boolean(变量/表达式);
- 将变量/表达式的数据,转化为布尔类型。
转化原则和自动转化完全相同
- 转化原则
false:0、0.000、NaN 、' ' 、null 、undefined
true:其他情况都转化为 true
var num = 100;
var num1 = 100.1;
var num11 = 0;
var num111 = -1;
var num2 = "哈哈哈哈";
var num3 = " ";
var num33 = "";
var num4 = "100";
var num5 = undefined;
var num6 = null;
console.log(typeof Boolean(num), Boolean(num));
console.log(typeof Boolean(num1), Boolean(num1));
console.log(typeof Boolean(num11), Boolean(num11));
console.log(typeof Boolean(num111), Boolean(num111));
console.log("----------------------------------");
console.log(typeof Boolean(num2), Boolean(num2));
console.log(typeof Boolean(num4), Boolean(num4));
console.log(typeof Boolean(num3), Boolean(num3));
console.log(typeof Boolean(num33), Boolean(num33));
console.log("----------------------------------");
console.log(typeof Boolean(num5), Boolean(num5));
console.log(typeof Boolean(num6), Boolean(num6));
- 总结
- 数字中, 除了0, 其他都会转为 true
- 字符串中, 只有空字符串(不是空白字符串)会转为 false
- undefined null 都会转为false
二、强制转化为字符串类型
String( 变量/表达式 );
- 转化原则和自动转化相同,不会改变变量中存储的原始数据
- 任何数据类型都可以
变量.toString( );
- 转化原则和自动转化相同,不会改变变量中存储的原始数据
- 不能给undefined和null转换
1. String(变量/表达式 );
var num = 100;
var num1 = 100.1;
var num2 = true;
var num3 = false;
var num4 = undefined;
var num5 = null;
console.log(typeof String(num), String(num));
console.log(typeof String(num1), String(num1));
console.log(typeof String(num2), String(num2));
console.log(typeof String(num3), String(num3));
console.log(typeof String(num4), String(num4));
console.log(typeof String(num5), String(num5));
2. 变量.toString();
var num = 100;
var num1 = 100.1;
var num2 = true;
var num3 = false;
console.log(typeof num.toString(), num.toString());
console.log(typeof num1.toString(), num1.toString());
console.log(typeof num2.toString(), num2.toString());
console.log(typeof num3.toString(), num3.toString());
var a = 100;
console.log(a.toString());
console.log(a.toString(2));
- 如果变量储存的是
null或者undefined, 不支持toString() 语法
var b = null;
console.log(String(b));
b.toString();
var c = undefined;
console.log(String(c));
c.toString();
3. 隐式转行
console.log(typeof (100 + ""), 100 + "");
console.log(typeof (100.1 + ""), 100.1 + "");
三、强制转化为数值类型
- Number(要转换的数据)
- parseInt(要转换的数据) (只保留小数点前的, 小数点后的直接忽略)
- parseFloat(要转换的数据) (不会忽略小数点后的)
1. 强制转化为数值类型
- Number()
- 转化原则
1:true
0:false、null、' ' 、' '
NaN:undefined,字符串内容不符合数字语法规范
console.log(typeof Number(true), Number(true));
console.log(typeof Number(false), Number(false));
console.log(typeof Number(null), Number(null));
console.log(typeof Number(""), Number(""));
console.log(typeof Number(" "), Number(" "));
console.log(typeof Number("100"), Number("100"));
console.log(typeof Number("100.123"), Number("100.123"));
console.log(typeof Number("2e3"), Number("2e3"));
console.log(typeof Number(undefined), Number(undefined));
console.log(typeof Number("100px"), Number("100px"));
console.log(typeof Number("a123"), Number("a123"));
2. parseInt():获取数据的整数部分
- 如果是纯数字, 直接转为 number
- 如果是纯字母, 直接转为 NaN
- 如果是数字开头, 将开头的数组转为number, 后续的值忽略
- 不能识别字符串的科学计数法
console.log(typeof parseInt(true), parseInt(true));
console.log(typeof parseInt(false), parseInt(false));
console.log(typeof parseInt(null), parseInt(null));
console.log(typeof parseInt(undefined), parseInt(undefined));
console.log(typeof parseInt(100), parseInt(100));
console.log(typeof parseInt(100.123), parseInt(100.123));
console.log(typeof parseInt("100"), parseInt("100"));
console.log(typeof parseInt("100px"), parseInt("100px"));
console.log(typeof parseInt("100abc100"), parseInt("100abc100"));
console.log(typeof parseInt(2e3), parseInt(2e3));
console.log(typeof parseInt("2e3"), parseInt("2e3"));
3. parseFloat():获取数据的浮点数部分
console.log(typeof parseFloat(true), parseFloat(true));
console.log(typeof parseFloat(false), parseFloat(false));
console.log(typeof parseFloat(null), parseFloat(null));
console.log(typeof parseFloat(undefined), parseFloat(undefined));
console.log(typeof parseFloat(100), parseFloat(100));
console.log(typeof parseFloat(100.123), parseFloat(100.123));
console.log(typeof parseFloat("100"), parseFloat("100"));
console.log(typeof parseFloat("100px"), parseFloat("100px"));
console.log(typeof parseFloat("100abc100"), parseFloat("100abc100"));
console.log(typeof parseFloat(2e3), parseFloat(2e3));
console.log(typeof parseFloat("2e3"), parseFloat("2e3"));
4. 隐式转行
console.log(typeof (true - 0), true - 0);
console.log(typeof (false - 0), false - 0);
console.log(typeof (null - 0), null - 0);
console.log(typeof ("" - 0), "" - 0);
console.log(typeof (" " - 0), " " - 0);
console.log(typeof ("100" - 0), "100" - 0);
console.log(typeof ("100.123" - 0), "100.123" - 0);
console.log(typeof ("2e3" - 0), "2e3" - 0);
console.log(typeof (undefined - 0), undefined - 0);
console.log(typeof ("100px" - 0), "100px" - 0);
console.log(typeof ("a123" - 0), "a123" - 0);