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里将出现语法错误。
为了兼容,我们可以用 < 来替代 < ,并且这样可以正常运行,但是这样代码将很难理解,不推荐。
第二种方法:
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运行于用户的浏览器,更应该注意管理自己的变量、及时的释放和程序的逻辑,用户机器配置、浏览器版本都不可预测的,滥用用户资源、产生意想不到的结果都是应该避免的。
未完。。。。。。。