通过"!!""将非布尔型数据隐式转换成布尔型(注意!运算是用于将布尔型的操作数的逻辑非运算)
> !!'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'.