1.其它数据类型转换为String
例如:
<script>
let num = 100;
console.log(typeof(num.toString()));
console.log(num.toString().valueOf());
console.log(typeof(String(num)));
console.log(String(num).valueOf());
console.log(typeof(num+''));
console.log((num+'').valueOf());
</script>
运行结果:
string
100
string
100
string
100
2.其它的数据类型转换为Number
例如:
<script>
let str = "100";
console.log(typeof(Number(str)));
console.log(Number(str).valueOf());
console.log(typeof(parseInt(str)));
console.log(parseInt(str).valueOf());
</script>
运行结果:
number
100
number
100
3.自动类型转换
Javascript的自动类型转换遵循以下规则:
1).自动转换为布尔值
遇到预期为布尔值的地方(比如if语句的条件部分),就会将非布尔值的参数自动转换为布尔值。系统内部会自动调用Boolean函数。 逻辑运算符!如果对非布尔值进行运算,则会将其转换为布尔值,然后再取反。 所以我们可以利用该特点,来将一个其他的数据类型转换为布尔值, 可以为一个任意数据类型取两次反,来将其转换为布尔值,原理和Boolean()函数一样。 只有空字符串("")、null、undefined、+0、-0 和 NaN 转为布尔型是 false,其他的都是 true。
let obj = {};
let arr = [];
console.log( Boolean(null)); //false
console.log( Boolean(undefined)); // false
console.log( Boolean('')); //false
console.log( Boolean(0)); //false
console.log( Boolean(NaN)); //false;
console.log(Boolean(obj)); //true
console.log(Boolean(arr)); //true
2).自动转换为数值
算数运算符(+ - * /)跟非Number类型的值进行运算时,会将这些值转换为Number,然后在运算,除了字符串的加法运算 一元运算符也会把运算子转成数值。
3).自动转换为字符串
字符串的自动转换,主要发生在字符串的加法运算时。当一个值为字符串,另一个值为非字符串,则后者转为字符串。
例如:
<script>
let arr = [1,2,3,4,5];
if(arr.length){
console.log('true');
}else{
console.log('false')
}
console.log(100+false);
console.log(100+true);
console.log('100'+false);
console.log('100'+100);
</script>
运行结果:
true
100
101
100false
100100
4.强制转换
强制转换的各种情况见下表:
