锁定老帖子 主题:JSI Side 代码风格与规范
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
作者 | 正文 | ||||||||||||
发表时间:2008-04-30
hax 写道 csf178 写道 事实上 delete window.xyz什么都做不了 哪种都没法删掉
有些时候window.xyz用来动态声明全局变量 不过有JSI的话当然就不需要了 delete window.xyz 是可以删掉的。问题是IE删不掉。因为在IE中window对象和所有DOM对象一样,无法用delete。 yes 就是指IE |
|||||||||||||
返回顶楼 | |||||||||||||
发表时间:2008-04-30
s79 写道 hax兄,能吧。我刚还测试来的。
IE5.5/IE6/IE7/FF2/Opera9/Safari3都测了。公司要求这六种浏览器…… 把这个代码贴到地址栏里测试吧: javascript:try{alert(delete window.xyz)}catch(e){alert(e)} |
|||||||||||||
返回顶楼 | |||||||||||||
发表时间:2008-04-30
哦,惭愧,刚才没测试window.test
var test="test";alert(delete test);//false test="test";alert(delete test);//true test="test";alert(delete window.test);//IE出错 window.test="test";alert(delete test);//IE出错 window.test="test";alert(delete window.test);//IE出错 看来IE对var、无var、window.的处理是分三种…… |
|||||||||||||
返回顶楼 | |||||||||||||
发表时间:2008-04-30
tmd 刚才没测 t="test" - -! |
|||||||||||||
返回顶楼 | |||||||||||||
发表时间:2008-04-30
以上是IE5.5/IE6/IE7会出现的情况,在FF2/Opera9/Safari3里,除了var t="test",delete window.t返回false外,都返回true。
听说出IE8了还没试啥样呢。 |
|||||||||||||
返回顶楼 | |||||||||||||
发表时间:2008-04-30
原来delete还有如此多的说法
我最初犯的一个错误式,误以为delete式删除变量的,后来发现,delete只是用来删除属性,纠正下来以为万事大吉了,没想到还有这样没完没了,呵呵 谢谢各位的精彩补充 |
|||||||||||||
返回顶楼 | |||||||||||||
发表时间:2008-04-30
s79 写道 以上是IE5.5/IE6/IE7会出现的情况,在FF2/Opera9/Safari3里,除了var t="test",delete window.t返回false外,都返回true。
听说出IE8了还没试啥样呢。 忘标注了 这个测试结果是ie8的ie7模式的结果 |
|||||||||||||
返回顶楼 | |||||||||||||
发表时间:2008-05-01
jindw 写道 * 杜绝变量悬空现象 不要出现: if (!window.Element){ var Element = new Object(); } 改成: var Element = window.Element || new Object(); 这段代码来自大名鼎鼎的Prototype,这里没错,但是如果被拷贝到某个函数内,问题就大了,有此类问题的脚本,放在JSI中装载,也会存在问题。 我觉得都非常不错,但这个我觉得用逻辑运算符并没有用if那么明了,当然我觉得上面的代码或许改为: var Element = window.Element; if (!Element){ Element = new Object(); } 还有一点,不知道应不应该定义一下私有变量和函数的命名规则,比如用 __temp 或者 __temp__ 来命名呢? |
|||||||||||||
返回顶楼 | |||||||||||||
发表时间:2008-05-01
补充一点,因为js变量没有作用域,所以可以参考pythone的标记方法
_var_ __var__ 虽然比较难看,但是能够分清变量的作用域,避免泄漏 |
|||||||||||||
返回顶楼 | |||||||||||||
发表时间:2008-05-01
trydofor 写道 补充一点,因为js变量没有作用域,所以可以参考pythone的标记方法
_var_ __var__ 虽然比较难看,但是能够分清变量的作用域,避免泄漏 js作用域是通过closure控制是没问题的 私有完全可以做到 这种用奇怪名字避免重名的办法千万不要约定 约定的就容易冲突 自己可以规定一下 比如 喜欢钱的可以用这种 $_$var |
|||||||||||||
返回顶楼 | |||||||||||||