JavaScript的9个陷阱及评点分析

时间:2021-05-26

1. 最后一个逗号

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

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

如这段代码:

<inputtype="button"value="Gotcha!"id="MyButton">
<script>
varMyObject=function(){
this.alertMessage="Javascriptrules";
this.ClickHandler=function(){
alert(this.alertMessage);
}
}();
document.getElementById(”theText”).onclick=MyObject.ClickHandler
</script>
并不如你所愿,答案并不是”JavaScriptrules”。在执行MyObject.ClickHandler时,代码中红色这行,this的引用实际上指向的是document.getElementById("theText")的引用。可以这么解决:

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

3. 标识盗贼

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

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

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

如下代码:

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

varfileName="Thisisatitle".replace(//g,"_");

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章