<span style="font-size:18px;"><script type="text/javascript">
window.onload = function()
{
var current = 12;//false
//var current = "12";//false
//var current = "str";//true
//isNaN() 函数(is Not a Number)用于检查其参数是否是非数字值
//检查 parseInt 和 parseFloat 方法的返回值
if(isNaN(current)){
alert("true");
}else{
alert("false");
}
//对于数字类型,非0用于条件比较代表true
if(1 && -1)
{
alert("true");
}
alert(!0);//true
//对于空串"" 代表false
if(!"")
{
alert(!"");
}
//undefined被当成基本类型,undefined转换成数字是NaN,
//因此undefined与除null之外的其它类型值进行比较时始终返回false(注意NaN==NaN返回false)
//null被当成复合对象,由于null没有valueOf与toString方法,
//因此和除了undefined之外的其它类型值进行比较时始终返回false
//Undefined类型只有一个值.即undefined.---undefined值从null值派生而来,二者值相等
//Null类型只有一个值,即null.
if(undefined == null)
{
alert("true");
}
if(!(undefined === null))
{
alert("true");
}
if(isNaN(undefined))
{
alert("true");
}
alert(typeof null);//object
//当函数没有明确返回值时,返回undefined
function func(){}
alert(func() == undefined); //true
var undefined = void null; //void函数永远返回undefined
var undefined = "myValue"; //相当于window.undefined = "myValue";
//总结:
//1.Number,Boolean,String,Undefined这几种基本类型混合比较时,会将其转换成数字再进行比较
//*******一般转换失败时,NaN(Not a Number)
//2.基本类型与复合对象进行比较时,会先将复合对象转换成基本类型(依次调用valueOf与toString方法)再进行比较
alert(1==true);//true转换成数字也是1
alert('1'==true);//将字符串'1'与true都转换成数字
alert('abc'==true);//虽然字符串'abc'转换成布尔值是true,但这里会返回false
//因为'abc'转换成数字是NaN,而true转换成数字是1
alert(123=='123');//同理,true
}
</script></span>