javascript:JavaScript的9个陷阱及评点分析

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中不要使用跟HTMLid变量名如下代码:
<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个参数应该是正则表达式所以正确做法是这样:
var fileName = "This is a title".replace(/ /g,"_");
Tags:  javascript数组 javascript特效 javascript教程 javascript

延伸阅读

最新评论

发表评论