Undefined类型只有一个值,即undefined。当声明的变量未初始化时,该变量的默认值是undefined。——《JavaScript高级程序设计 》
那么,关于这个值是undefined,究竟是怎样的一个值呢?
<script type="text/javascript">
var tmp;
alert(tmp);
</script>
上面的代码,无论在IE8还是在火狐中,在弹出的窗口中都有undefined。而在CS4的实时视图中,弹出的窗口却没有任何内容。
接着用代码来验证:
<script type="text/javascript">
var tmp1,tmp2,tmp3,tmp4;
tmp1 = "";
tmp2 = undefined;
tmp3 = "undefined";
//tmp4未初始化
document.write("tmp1=" + tmp1 + "<br />");//返回tmp1=
document.write("tmp2=" + tmp2 + "<br />");//返回tmp2=undefined,DW CS4 实时视图返回空。
document.write("tmp3=" + tmp3 + "<br />");//返回tmp3=undefined
document.write("tmp4=" + tmp4 + "<br />");//返回tmp4=undefined,DW CS4 实时视图返回空。
if(tmp2 == tmp3){
document.write("tmp2=tmp3" + "<br />");
}
else{
document.write("tmp2!=tmp3" + "<br />");//返回tmp2!=tmp3
}
if(tmp2 == tmp4){
document.write("tmp2=tmp4" + "<br />");//返回tmp2=tmp4
}
else{
document.write("tmp2!=tmp4" + "<br />");
}
if(tmp4 == tmp3){
document.write("tmp4=tmp3" + "<br />");
}
else{
document.write("tmp4!=tmp3" + "<br />");//返回tmp4!=tmp3
}
//通过上面的代码可以这样认为:当声明的变量未初始化时,该变量的默认值是undefined,这个值,并不是字符串,而是类似布尔只有两个值true,false,用来标识说明这个变量还未定义。在IE或者火狐浏览器(其他没试),会返回undefined。而在DW CS4并没有任何输出。这主要应该是不同浏览器的不同解析。
//关于与数值,与字符串的运算。
document.write(tmp2 + tmp3 + "<br />");//返回undefinedundefined
document.write(typeof(tmp2+tmp3) + " " + typeof(tmp4) + " " + typeof(tmp2) + "<br />" );//返回string undefined undefined
document.write(tmp2 + 10 + "<br />");//返回NaN
document.write(tmp3 + 10 + "<br />");//返回undefined10
document.write(tmp1 + tmp2 + "<br />");//返回undefined
document.write(tmp2 + null + "<br />");//返回NaN
//明显的,当undefined跟字符串运算的时候,会被浏览器当成字符串。而跟数值和Null运算则会返回NaN。
//再来看看undefined与逻辑的运算
if(tmp4){
document.write("tmp4 true <br />");
}
else{
document.write("tmp4 false <br />");//返回tmp4 false
}
document.write(!tmp4 + "<br />");//返回true
document.write("undefined and true=");
document.write(tmp4 && true );//返回undefined
document.write("<br />");
document.write("undefined or true=");
document.write(tmp4 || true );//返回true
document.write("<br />");
document.write("undefined and false=");
document.write(tmp4 && false );//返回undefined
document.write("<br />");
document.write("undefined or false=");
document.write(tmp4 || false );//返回false
document.write("<br />");
//在if(tmp4),返回的是false,也就是说,当它参与逻辑运算的时候,它的默认值是false。但在undefined and true和undefined and false中返回的仍是undefined,当然,这个再放在if中,返回的又是false。
</script>
另符一个,检查逻辑值:
<script type="text/javascript">
var b1=new Boolean( 0);
var b2=new Boolean(1);
var b22=new Boolean(2);
var b3=new Boolean("");
var b4=new Boolean(null);
var b5=new Boolean(NaN);
var b6=new Boolean("false");
document.write("0 是逻辑的 "+ b1 +"<br />");//返回 0 是逻辑的 false
document.write("1 是逻辑的 "+ b2 +"<br />");//返回 1是逻辑的 true
document.write("2 是逻辑的 "+ b22 +"<br />");//返回 2 是逻辑的 true
document.write("空字符串是逻辑的 "+ b3 + "<br />");//返回 空字符串是逻辑的 false
document.write("null 是逻辑的 "+ b4+ "<br />");//返回 null 是逻辑的 false
document.write("NaN 是逻辑的 "+ b5 +"<br />");//返回 NaN 是逻辑的 false
document.write("字符串 'false' 是逻辑的 "+ b6 +"<br />");//返回 字符串 'false' 是逻辑的 true
</script>
仅以此文献给,受钻牛角尖的QX,还是相当佩服你对知识的不求甚解。!!