字符串和数字之间的转换是通过 String(..) 和 Number(..) 这两个内建函数来实现的
String(42); // "42" Number('3.14'); // 3.14
String(..) 遵循前面讲过的 ToString 规则,将值转换为字符串基本类型。Number(..) 遵循 前面讲过的 ToNumber 规则,将值转换为数字基本类型。它们和静态语言中的类型转换很像,一目了然,所以我们将它们归为显式强制类型转换
42..toString(); // "42" +"3.14"; // 3.14
a.toString() 是显式的,不过其中涉及隐式转换。因为 toString() 对 42 这样的基本类型值不适用,所以 JavaScript 引擎会自动为 42 创建一个封装对象,然后对该对象调用 toString()。这里显式转换中含有隐式转换
在 JavaScript 开源社区中,一元运算 + 被普遍认为是显式强制类型转换。
5+ +'3.14'; // 8.14
一元运算符 - 和 + 一样,并且它还会反转数字的符号位。由于 -- 会被当作递减运算符来处 理,所以我们不能使用--来撤销反转,而应该像- -"3.14"这样,在中间加一个空格,才 能得到正确结果 3.14