在JavaScript语言中,原始类型与包装类型创建的数据在使用上没有任何差异
定义变量的两种方式
// 直接/字面量 量方式定义
var bool = true;
//构造函数方式
var Bool = new Boolean(true);
创建对象的语法格式
new 构造函数();
例如var Bool = new Boolean(true);
表示创建一个值为true的变量Bool
三种包装类型分别是 布尔类型、数字类型、字符串类类型
var Bool = new Boolean(true);
var Num = new Number(100);
var Str = new String("this is message");
判断包装类型不能使用typeof
而是使用instanceof
。语法结构变量名/对象名 instanceof 构造函数/数据类型
console.log(Str instanceof String);
得到undefined
这个值的情况
undefined
时。
var msg1 = undefined; console.log(msg1); return
语句的默认返回值。
return
语句的返回值的设置为undefined
null 是5个基本类型的一个,但是得到的类型是object。这是JavaScript语言的历史遗留问题/当初设计的纰漏。所以当我们判断null
类型时可以使用特殊方法console.log(Object.prototype.toString.call(null));
undefined派生于null。他们两个值相等但类型不等。
console.log(undefined == null); // 结果true 说明值相等
console.log(undefined === null); // 结果false 说明类型不等
关键点 | 隐式类型转换 | 显式类型转换 |
---|---|---|
JavaScript官方规范 | 官方未提及 | 明确表明 |
执行效率/性能 | 优于显式转换 | 弱于隐式转换 |
难易程度 | 不易 | 容易 |
欲转换为 | 转换符号 | 说明 | 示例 |
---|---|---|---|
布尔 | !! | 将数据转换为布尔类型,在数据前加!!即可 | !!"this is message"!!11 |
数字 | + | 将数据转换为数字类型,在数据前加+即可 | +"this is message"+true |
字符串 | ""+ | 将数据转换为字符串类型,与空字符串相加即可(位置无关) | "" + 100"" + true |
显示类型转换则是利用类型的构造方法
// 转化为 boolean 类型
console.log(typeof Boolean("this is message"));
console.log(typeof Boolean(100));
// 转化为number类型
console.log(typeof Number("100"));
console.log(typeof Number(true));
// 转化为 string 类型
console.log(typeof String(100));
console.log(typeof String(true));
关于转换为数字时JavaScript
提供了提供了两个函数用户转换为number类型的整数和浮点数。
console.log(parseInt(11.11));
console.log(parseFloat(11.11));
但需要注意的是:转换为整型即parseInt
函数,如果包含小数则将小数部分舍掉,并不会四舍五入计算。
console.log("100转化为", parseInt("100"));
console.log("100.55转化为", parseInt("100.55"));
console.log("100转化为", parseFloat("100"));
console.log("100.55转化为", parseFloat("100.55"));
/*
输出结果为:
100转化为 100
100.55转化为 100
100转化为 100
100.55转化为 100.55
*/
关于转换为string类型JavaScript还提供一个toString
方法。
var num = 100;
var bool = true;
console.log(typeof num.toString());
console.log(typeof bool.toString());