刚才在看《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 之外的其他运算符的话,会引起错误。因为其他运算符只能用于已声明的变量上。

看不是很懂,打打酱油。
辛苦啊,还在学习
我放假了
今天上午刚要留言,一声噩耗,改。。。
还没来得及留言就闪人了。
好久没来了,看来你是看错了啊!我也在学js哈
在ie地址栏里和 html页里有区别吗?
看来门道很多。。
@crossyou
理论上是没有区别。但是我决定以后尽量还是用页面了。呵呵。。
严格的说我看不懂……
@集团电话
严格的说,一看到您的用户名,我还以为是SPAM呢。。
先点下广告,再留言…我可以吧
话说这周我也解决了个JS的难题,哈哈,很有成就感
Js和Css,要学习的还很多很多…
学习了~~