您现在的位置: 网页制作教程网 >> 网页特效 >> Javascript 教程 >> 文章正文

JavaScript的9个陷阱

作者:aspcool

来源:aspcool

热度:

2007-10-31 12:43:12

来自Nine Javascript Gotchas, 以下是JavaScript容易犯错的九个陷阱。虽然不是什么很高深的技术问题,但注意一下,会使您的编程轻松些,即所谓make life easier. 笔者对某些陷阱会混杂一些评点。
  
    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的第一个参数应该是正则表达式。所以,正确的做法是这样:
  
    var fileName = "This is a title".replace(/ /g,"_"); 
   
   
  

[1] [2] 下一页


我来说两句:

1分 2分 3分 4分 5分
姓名: *


* 请各位网友遵纪守法并注意语言文明。
网站简介 | 联系方式 | 意见建议 | 版权说明
Copyright © 2007 All rights reserved
滇ICP备06006992号