问题:
一些新手经常会把忘记生命变量,而直接使用。比如未var a;直接给a=2; 这在firefox下,没有问题。在chrome中也没啥大问题。但是在ie6中,如果在dom中有个id=“a”的元素。这时候,赋值a=2;就会报js错误。

问题代码:

<div id="obj1"></div>

<script type="text/javascript">
alert(typeof obj1);
obj1=2;
</script>

以上代码:
在firefox下。                         obj1是undefined。obj1 = 2。         这个好理解。
在ie6-8下。                           obj1是object。     obj1=2赋值出错。因为类型错误啊。我猜测因为ie对dom的实现是com啊。所以有类型啊。
在chorme/opera/safari下。      obj1是object。     obj1= 2赋值成功。好像很完美的样子。

firefox的做法。明显是最规范的。从理论上说就是这样的。
ie6的做法。让obj1在js中直接使用,确实是方便了。但是这明显不符合语法。很容易让人误解。所以这两方面都有优缺点。
chrome的做法。既让人可以方便的使用obj1.又可以赋值。确保了不会出错。好像很完美一样。但是对于不知道这个用法的人来说,某些情况下就会出现问题了。

解决办法尝试1

<div id="obj1"></div>

<script type="text/javascript">
var obj1;
alert(typef obj1);
obj1 = 2;
</script>

firefox,不用说。很标准的。 undefined,赋值成功
opera,  也没什么问题,undefined,赋值成功
ie6-8,   没什么问题,undefined,赋值成功
chrome/safari          obj,赋值成功

真是蛋疼+二逼的chrome啊。本来通过var声明就可以解决的问题。被搞成个鸟样。

最后办法:
因为二逼chrome/safari的存在,我们只能给obj赋初始值了。

posted on 2012-06-13 11:56  日—月  阅读(321)  评论(0编辑  收藏  举报