隐式转换数据类型

通过"!!""将非布尔型数据隐式转换成布尔型(注意!运算是用于将布尔型的操作数的逻辑非运算)

> !!'X'; //字符串
< true
> !!1;  //Number
< true
> !!0;
< false
> !!'';
< false
> !!null;
< false
> !!Infinity
< true
> !!{}  // 进行布尔型的数据转换时,           
< true  // Object类型转换后的结果必定为true

通过使用'+'运算符将Number转换成字符串

> var n = 0; 
> n += "";
> typeof n;
< "string"
同样通过使用'+'运算符将字符串转换成Number
    var s = "";          //空字符
    console.log(+s);    //    0
    console.log(typeof +s);    //NaN
    console.log(parseInt(s));     //NaN
    console.log(Number(s));   // 0
    var s = " ";          //空格符
    console.log(+s);    //    0
    console.log(typeof +s);    //NaN
    console.log(parseInt(s));     //NaN
    console.log(Number(s));   // 0
    var s = "abc";      //纯字符串
    console.log(+s);    NaN
    console.log(typeof +s);   // number
    console.log(parseInt(s));   NaN
    console.log(Number(s)); NaN
    var s = "undefined";        //undefined
    console.log(+s);    //NaN
    console.log(typeof +s);     // number
    console.log(parseInt(s));   //NaN
    console.log(Number(s)); //NaN   
    var s = "123abc";          //  混合型
    console.log(+s);    //NaN
    console.log(typeof +s);  // number
    console.log(parseInt(s));   //123
    console.log(Number(s)); //NaN
    var s = null;                //null
    console.log(+s);      // 0
    console.log(typeof +s);      // number
    console.log(parseInt(s));   NaN
    console.log(Number(s));  // 0

不难发现"+"前置运算符的Number转换规则和函数Number()是一样的,
值得注意的是,Number()将undefined和字符串转换成NaN,NaN同样是一种
Number类型;同时将null,""(空字符)" "(空格符)转换成数字'0'.

你可能感兴趣的:(隐式转换数据类型)