幾個要注意的javascript小case

來源:互聯網
上載者:User

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運行於使用者的瀏覽器,更應該注意管理自己的變數、及時的釋放和程式的邏輯,使用者機器配置、瀏覽器版本都不可預測的,濫用使用者資源、產生意想不到的結果都是應該避免的。

 

未完。。。。。。。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.