几个要注意的javascript小case

javascript简单很容易上手,但是有时会被一些小case搞的晕头转向。它虽然和主流语言有着相似的语法,但是却有着太多自己的特性,了解这些小特性,你会感觉它很强大,反而就会走向另一个极端。

 

1,关于script标记

不要在<script>标记内部出现</script>,会被html解析成结束标记而产生错误。

1 <script type="text/javascript">
2 alert("</script>");
3 </script>

将出现错误,我们可以这样写:alert("</sc“+”ript>");
   
2,defer  延迟执行

1 <script src="scripts/demo.js" type="text/javascript" defer="defer"></script>

只用于外部js,标识浏览器在解析完整个页面之后再执行的js。

 

但是还是建议把js放到页面底部来实现在页面解析完毕之后再执行js,而不是用defer。

 

因为并不是所有的浏览器都支持defer,不过现在主流的浏览器ie,ff,chrome都支持defer。
   
3,为什么要用  //<![CDATA[ 

我们应该都见过js如下推荐的写法,不过我们没加也是可以正常运行的??

1 <script type="text/javascript">
2 //<![CDATA[
3 // your js code
4 // ]]>
5 </script>

 

为什么要这样写,看下边这段代码

1 <script type="text/javascript">
2 if(a < b)
3 {
4 // your code
5 }
6 </script>

 

这段代码html里没问题,但是在xhtml的标准里,所有的 < 都会被当做一个标签的开始来解析,如果之后跟空格将会解析语法错误,上述的写法在xhtml里将出现语法错误。

为了兼容,我们可以用 &lt; 来替代 < ,并且这样可以正常运行,但是这样代码将很难理解,不推荐。

第二种方法:

1 <script type="text/javascript">
2 <![CDATA[
3 if(a < b)
4 {
5 // your code
6 }
7 ]]>
8 </script>

 

xhtml里把CDATA片段代码会当成普通文本处理,大功告成。

但是,一些不兼容xhtml的浏览器,是不识别CDATA的,因此就出现了上面的推荐写法。

 

ps:现在主流浏览器并不需要加CDATA也能正常解析,可能是浏览器进行了特殊的处理。

   
4,给自己的页面加<noscript></noscript>

面对越来越多的平台、设备都能联网,面对越来越多样化的用户,这一行代码还是有必要的。

 

5,直接给从未声明的变量赋值

直接给从未声明的变量赋值,不会产生错误,而是会产生一个全局的变量,它将会在页面关闭时才会释放。

ps:相对于服务器端的语言(C#、java等),javascript运行于用户的浏览器,更应该注意管理自己的变量、及时的释放和程序的逻辑,用户机器配置、浏览器版本都不可预测的,滥用用户资源、产生意想不到的结果都是应该避免的。

 

未完。。。。。。。

posted @ 2012-02-21 17:12  for certain  阅读(519)  评论(0编辑  收藏  举报