2.02.28数据类型的转换
1.数据类型的转换
1.布尔对象
-
介绍:与基本数据类型布尔值不同,Boolean对象是一个布尔值的对象包装器。
-
语法:接受作为第一个参数传递的值将转换为布尔值。如果省略或值0,-0,null,false,NaN,undefined,或空字符串(""),该对象具有的初始值false。所有其他值,包括任何对象,空数组([])或字符串"false",都会创建一个初始值为true的对象。
-
注意1:不要将基本类型中的布尔值字面量 true 和 false 与值为 true 和 false 的 Boolean 对象弄混了。其值不是undefined或null的任何对象(包括其值为false的布尔对象)在传递给条件语句时都将计算为true。
例如:以下if语句中的条件评估为true:
var x = new Boolean(false);
console.log(x); // 控制台打印:Boolean{false} // 一个Boolean对象,其中的PrimitiveValue属性的属性值为:false
console.log(typeof x); //object
if (x) {
// 这里的代码会被执行
}
var x = false;
if (x) {
// 这里的代码不会执行
}
- 注意2:不要用创建 Boolean 对象的方式将一个非布尔值转化成布尔值,直接将 Boolean 当做转换函数来使用即可。
var expression="aa";
var x = Boolean(expression); // 推荐
console.log(x);// 控制台打印:true
console.log(typeof x); //boolean
var x = new Boolean(expression); // 不太好
console.log(x);//控制台打印:Boolean{true} //一个Boolean对象,其中的PrimitiveValue属性的属性值为:true
console.log(typeof x); //object
2.字符串对象
- 介绍:与基本数据类型string值不同,String 对象是对原始string类型的封装。
const foo = new String('foo'); // 创建一个 String 对象
console.log(foo); // 控制台打印:String:{'foo'}
console.log(typeof foo); // 返回 'object'
- 注意:除非必要, 应该尽量使用 String 字面值创建字符串,直接将String 当做转换函数来使用即可。所有的数字/布尔值都转换成对应的字符串
String(123) // '123'
String(true) // 'true'
String(false) // 'false'
3.数字对象
- 概念:内置的Number对象有一些有关数字的常量属性,如最大值、不是一个数字和无穷大的。你不能改变这些属性,但可以按下边的方式使用它们
var biggestNum = Number.MAX_VALUE; // 可表示的最大值
var smallestNum = Number.MIN_VALUE; // 可表示的最小值
var infiniteNum = Number.POSITIVE_INFINITY; // 特指“正无穷”;在溢出时返回
var negInfiniteNum = Number.NEGATIVE_INFINITY; // 特指“负无穷”;在溢出时返回
var notANum = Number.NaN; // 特指”非数字“
var epsilonNum = Number.EPSILON // 表示1和比最接近1且大于1的最小Number之间的差别
var minSafeInterger = Number.MIN_SAFE_INTEGER // JavaScript最小安全整数
var maxSafeInterger = Number.MAX_SAFE_INTEGER // JavaScript最大安全整数
- 注意:不要用创建 Number 对象的方式创建数字对象,使用Number当做转换函数也不太常用,更多是使用数字对象提供的方法
// 能成功转换成数字的字符串会被转化为相应的数字
Number('123') // 123
// 不能成功转换成数字的字符会被转化为NaN
Number('123a') // NaN
Number('') // 0
Number(true) // 1
Number(false) // 0
4.隐式转换
- 参考2.02.16运算符补充的笔记