undefined VS. null

javascript的变量有一种特殊值,undefined。判断一个变量是不是等于undefined的时候,有两种方法:

if (foo_bar === undefined) { //do something }
if (typeof foo_bar === "undefined") { // do something }

这两种用法是有区别的,其中第二种的形式比较通用,如果怕麻烦,就全部使用第二种就好,没错。
不过据Mr. stauren发现,一些追求极致的代码中,还是会使用第一种方法,比如google的很多代码,因为显然第

一种方式比较节约长度,而这对于web应用来说是至关重要的。使用第一种方式,很容易导致js代码出错,因为js

碰到未赋值变量被使用的时候,会抛出一个"xxx is not defined"的错误。只有两种情况例外:

1. 这个变量是函数的参数,可能传入的时候这个参数被忽略,但是,其实它在函数初始时已经被声明并赋值

undefined,所以不会出错。
2. 这个变量是某对象的成员。很好笑的是一个结论:
alert(a); //抛出错误
alert(window.a); // 结果为"undefined"

补充一点:
如果是该变量是某对象的成员的成员,如果它的成员就为undefined的话,还是会抛出错误。
所以,
alert(window.a); // ok
alert(window.a.a); //error

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值