Heim >Web-Frontend >js-Tutorial >JavaScript的9个陷阱及评点分析_javascript技巧

JavaScript的9个陷阱及评点分析_javascript技巧

WBOY
WBOYOriginal
2016-05-16 19:04:26853Durchsuche

1. 最后一个逗号

如这段代码,注意最后一个逗号,按语言学角度来说应该是不错的(python的类似数据类型辞典dictionary就允许如此)。IE会报语法错误,但语焉不详,你只能用人眼从几千行代码中扫描。

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

如这段代码:


<script> <BR>var MyObject = function () { <BR> this.alertMessage = "Javascript rules"; <BR> this.ClickHandler = function() { <BR> alert(this.alertMessage ); <BR> } <BR>}(); <BR>document.getElementById(”theText”).onclick = MyObject.ClickHandler <BR></script>
并不如你所愿,答案并不是”JavaScript rules”。在执行MyObject.ClickHandler时,代码中红色这行,this的引用实际上指向的是document.getElementById("theText")的引用。可以这么解决:


<script> <BR>var MyObject = function () { <BR> var self = this; <BR> this.alertMessage = “Javascript rules”; <BR> this.OnClick = function() { <BR> alert(self.value); <BR> } <BR>}(); <BR>document.getElementById(”theText”).onclick = MyObject.OnClick <BR></script>
实质上,这就是JavaScript作用域的问题。如果你看过,你会发现解决方案不止一种。

3. 标识盗贼

在JavaScript中不要使用跟HTML的id一样的变量名。如下代码:


<script> <BR> TheButton = get("TheButton"); <BR></script>
IE会报对象未定义的错误。我只能说:IE sucks.

4. 字符串只替换第一个匹配

如下代码:

<script> <BR> var fileName = "This is a title".replace(" ","_"); <BR></script>
而实际上,结果是”This_is a title“. 在JavaScript中,String.replace的第一个参数应该是正则表达式。所以,正确的做法是这样:

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

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn