<script type="text/javascript">
//Number转换规则 0:false
Number(""); //0
Number(" "); //0
Number(false); //0
Number(null); //0
Number("123"); //123
Number("123abc"); //NaN
Number(undefined); //NaN
//String转换规则
String(123); //"123"
String("abc"); //"abc"
String(true); //"true"
String(undefined); //"undefined"
String(null); //"null"
//Boolean转换规则,除以下类型为flase,其它全部为true
Boolean(undefined); //false
Boolean(null); //false
Boolean(0); //false
Boolean(-0); //false
Boolean(+0); //false
Boolean(NaN); //false
Boolean(""); //false
Boolean(" "); //false
Boolean(new Boolean(false)); //true
Boolean([]); //true
Boolean({}); //true
//<span style="font-family: Arial, Helvetica, sans-serif;">由于自动转换有很大的不确定性,而且不易除错,建议在预期为布尔值、数值、字符串的地方,全部使用Boolean、Number和String方法进行显式转换</span>
//自动转换数值
'1' - '2'; // -1
'5' * '2'; // 10
true - 1; // 0
false - 1; // -1
'1' - 1; // 0
'1'*[]; // 0
false/'1'; // 0
'abc'-1; // NaN
//自动转换String
'2' + 1; // 21
'2' + true; // 2true
'2' + false; // 2false
'2' + {}; // 2[object Object]
'2' + []; // 2
'2' + function (){}; // 2function (){}
'2' + undefined; // 2undefined
'2' + null; // 2null
//其它
true+2; //3
true+true; //2
1+[1,2]; //11,2
1+{a:1}; //1[object,Object]
{a:1}+1; //1
({a:1}=1); //[object Object]1
//四个特殊表达式
[]+[]; //
[]+{}; //[object Object]
{}+[]; //0
+[]; //0
({})+[]; //[object Object]
{}+{}; //NaN
+{}; //NaN
{}+{}; //[object Object][object Object]
{}+[]; //[object Object]
</script>