關於JavaScript的一些看法

來源:互聯網
上載者:User

眾所周知,一句JS代碼以分號結束和以斷行符號符結束在瀏覽器中均能正常運行(至少在我的IE7中是這樣)。不知道這是JS語言的特性或者僅僅是解譯器的容錯功能?由於斷行符號符也可以是一句代碼結束的標誌,進行JS壓縮的時候就麻煩些了。要壓縮掉所有的斷行符號符,程式就得知道哪裡是一條語句的結束,並在結束位置後面添加上";"。這是一件不容易的事情(或許有容易的方法我還沒想到吧),最後無賴我只好採取了一種折中的方法:保留必要的斷行符號符,去掉";"、","、"+"等等分隔字元前後的斷行符號符。(要是JS也像C++等語言一樣以";"結尾,那該是多麼容易的一件事情!)
在開發的過程中,還發現一個比較奇怪的問題。如下面的代碼所示: 複製代碼 代碼如下:1<body>
2
3<script>
4
5function class1(){};
6
7class1.prototype.ShowMessage = function ShowMsg()
8{
9 alert("ShowMsg Function!");
10}
11var test = new class1();
12test.ShowMessage();
13</script>
14
15</body>

上面的代碼可以正常運行。
如果把第11行前的"\n"去掉,即程式變成: 複製代碼 代碼如下:1<body>
2
3<script>
4
5function class1(){};
6
7class1.prototype.ShowMessage = function ShowMsg()
8{
9 alert("ShowMsg Function!");
10} var test = new class1();
11test.ShowMessage();
12</script>
13
14</body>

則將不能正確運行,原因在於"= function(){...}"的"}"不能標誌語句塊結束。也就是說,整個"= function(){...}"僅僅是一條語句,如上所述,一條語句必須以斷行符號符或者";"結束。這是和C/C++等又一重大區別。
介於此,建議大家以後寫JS代碼的時候還是在一句話後面加";"表示結束,以避免不必要的BUG。
PS:雖然JS很強大,但是它這些“缺點”真是讓我沒法喜歡上它。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.