JavaScript的9個陷阱及評點分析

來源:互聯網
上載者:User

1. 最後一個逗號

如這段代碼,注意最後一個逗號,按語言學角度來說應該是不錯的(python的類似資料類型辭典dictionary就允許如此)。IE會報語法錯誤,但語焉不詳,你只能用人眼從幾千行代碼中掃描。

<script>
var theObj = {
city : "Boston",
state : "MA",
}
</script>
2. this的引用會改變

如這段代碼:

<input type="button" value="Gotcha!" id="MyButton" >
<script>
var MyObject = function () {
this.alertMessage = "Javascript rules";
this.ClickHandler = function() {
alert(this.alertMessage );
}
}();
document.getElementById(”theText”).onclick = MyObject.ClickHandler
</script>
並不如你所願,答案並不是”JavaScript rules”。在執行MyObject.ClickHandler時,代碼中紅色這行,this的引用實際上指向的是document.getElementById("theText")的引用。可以這麼解決:

<input type="button" value="Gotcha!" id="theText" >
<script>
var MyObject = function () {
var self = this;
this.alertMessage = “Javascript rules”;
this.OnClick = function() {
alert(self.value);
}
}();
document.getElementById(”theText”).onclick = MyObject.OnClick
</script>
實質上,這就是JavaScript範圍的問題。如果你看過,你會發現解決方案不止一種。

3. 標識盜賊

在JavaScript中不要使用跟HTML的id一樣的變數名。如下代碼:

<input type="button" id="TheButton">
<script>
TheButton = get("TheButton");
</script>
IE會報對象未定義的錯誤。我只能說:IE sucks.

4. 字串只替換第一個匹配

如下代碼:

<script>
var fileName = "This is a title".replace(" ","_");
</script>
而實際上,結果是”This_is a title“. 在JavaScript中,String.replace的第一個參數應該是Regex。所以,正確的做法是這樣:

var fileName = "This is a title".replace(/ /g,"_");

相關文章

聯繫我們

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