2010一月21
undefined 和 运算符
刚才在看《JavaScript 高级程序设计》,一本好书,想认真啃一下。在书中的第37页,谈到Boolean运算符的时候(NOT,AND,OR),有这么一句话:
使用NOT运算符时(!),如果运算数是undefined,发生错误
用多个浏览器,在地址栏里分别输入这样的语句进行测试:
javascript:alert(!undefined);
javascript:alert(!a); //IE报错,其余皆不报错
javascript:var a; alert(!a);
javascript:alert(!a); //IE报错,其余皆不报错
javascript:var a; alert(!a);
除了第二条语句外,无论是IE6,IE8还是 Firefox , Opera, Safari,都返回的是true,于是欣喜若狂,以为书中写的有问题。于是去翻其勘误表,结果发现没有这个错误,so 更加的开心。。-_-!!!
开开心心的去把成果告诉同事,结果半分钟左右,人家就来否定我了,这真是悲哀啊。。
同事的测试方法,在html页面里写如下代码:
<html>
<head>
<title> test boolean not undefined</title>
</head>
<body>
<script type="text/javascript">
alert(!a);
</script>
</body>
</html>
<head>
<title> test boolean not undefined</title>
</head>
<body>
<script type="text/javascript">
alert(!a);
</script>
</body>
</html>
继续测试:
<html>
<head>
<title> test boolean not undefined</title>
</head>
<body>
<script type="text/javascript">
alert(!undefined);
</script>
</body>
</html>
<head>
<title> test boolean not undefined</title>
</head>
<body>
<script type="text/javascript">
alert(!undefined);
</script>
</body>
</html>
继续测试:
<html>
<head>
<title> test boolean not undefined</title>
</head>
<body>
<script type="text/javascript">
var a ;
alert(!a);
</script>
</body>
</html>
<head>
<title> test boolean not undefined</title>
</head>
<body>
<script type="text/javascript">
var a ;
alert(!a);
</script>
</body>
</html>
测试结果表明,只有第一种情况浏览器报错。。
深感无奈,刚才经同事指点,发现该书中第15页有如下话语:
对未声明过的变量,使用除 typeof 之外的其他运算符的话,会引起错误。因为其他运算符只能用于已声明的变量上。
文章作者:simaopig
本文地址:http://www.xiaoxiaozi.com/2010/01/21/1693/
版权所有 © 转载时必须以链接形式注明作者和原始出处!
看不是很懂,打打酱油。
[回复]
辛苦啊,还在学习
我放假了
[回复]
今天上午刚要留言,一声噩耗,改。。。
还没来得及留言就闪人了。 :???:
[回复]
好久没来了,看来你是看错了啊!我也在学js哈
[回复]
在ie地址栏里和 html页里有区别吗?
[回复]
看来门道很多。。
[回复]
@crossyou
理论上是没有区别。但是我决定以后尽量还是用页面了。呵呵。。
[回复]
严格的说我看不懂……
[回复]
@集团电话
严格的说,一看到您的用户名,我还以为是SPAM呢。。
[回复]
先点下广告,再留言…我可以吧
话说这周我也解决了个JS的难题,哈哈,很有成就感
[回复]
Js和Css,要学习的还很多很多…
[回复]
学习了~~
[回复]