← 返回首页
Javascript基础教程(十四)
发表时间:2020-03-28 01:07:55
讲解Javascript数据类型转换

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.强制转换

强制转换的各种情况见下表: