JS中,关于undefined 的“值”

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,还是相当佩服你对知识的不求甚解。!!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值