script默认的对象是window,name是window的一个属性。比如这样的两个页面:
a.html
<a href="b.html" target="hello_window">b.html</a>b.html
<script>alert(name);</script>当从a.html点击链接到b.html时会弹出对话框,显示hello_window。
这就是alert(name);//居然会弹出一个提示,但是个空的提示 会弹出空的提示的原因了。
name=1;这条语句也是没有问题的。
name+1=1;这条语句在firefox里边和ie7里边都没有通过,不知道你用什么浏览器通过的

解决方案 »

  1.   

    name在上层的命名空间中已经定义为字符串。name += 1表示字符串相加,结果肯定是字符串。
      

  2.   

    IE6 如果我那段代码最开始是var name;这样声明一下,你试试应该就没问题了
    还有你的target用法,我还是第一次看到这么用。。一般值不是_blank或_self这样固定的吗。难道可以自定义字符串?2楼的说法貌似有道理。。但所谓“上层的命名空间”是什么??
      

  3.   

    汗 不好意思 我写错了 是name+=1;
    刚才没看到
      

  4.   

    所谓的上层的命名空间,指的也就是window了,如果你没有见过target的这种用法,试一下就知道了呀,无非就是想说明,没有定义的name就是window的name属性,代表的是当前窗口的名称。不妨试试<span onclick="window.open('b.html','hello_window');">b.html  </spam> ,在弹出窗口的b页面同样会alert出hello_window来。
    如果是name+=1的话,window.name是定义成了字符串的,因此会直接在后面加1,变成11。这点赞同2楼的。
      

  5.   

    开始alert(name)时,由于你没有申明name这个变量。所以js会自动帮你声明,你也说了弹出来的是空。空表示是字符串。所以,申明的name是字符串类型的。
    呵呵,我是这么理解的。