JavaScript的9个陷阱及评点分析


Posted in Javascript onMay 16, 2008

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,"_");

Javascript 相关文章推荐
CheckBox 如何实现全选?
Jun 23 Javascript
xheditor与validate插件冲突的解决方案
Apr 15 Javascript
JS去掉第一个字符和最后一个字符的实现代码
Feb 20 Javascript
全面解析DOM操作和jQuery实现选项移动操作代码分享
Jun 07 Javascript
jQuery数据检索中根据关键字快速定位GridView指定行的实现方法
Jun 08 Javascript
理解JavaScript原型链
Oct 25 Javascript
Vue配合iView实现省市二级联动的示例代码
Jul 27 Javascript
vue移动端弹框组件的实例
Sep 25 Javascript
微信小程序移动拖拽视图-movable-view实例详解
Aug 17 Javascript
Layui动态生成select下拉选择框不显示的解决方法
Sep 24 Javascript
node.js中npm包管理工具用法分析
Feb 14 Javascript
Map与WeakMap类型在JavaScript中的使用详解
Nov 18 Javascript
认识延迟时间为0的setTimeout
May 16 #Javascript
用函数式编程技术编写优美的 JavaScript_ibm
May 16 #Javascript
Javascript模块模式分析
May 16 #Javascript
Dom加载让图片加载完再执行的脚本代码
May 15 #Javascript
直接生成打开窗口代码,不必下载
May 14 #Javascript
地震发生中逃生十大法则
May 12 #Javascript
通过修改referer下载文件的方法
May 11 #Javascript
You might like
PHP+DBM的同学录程序(1)
2006/10/09 PHP
PHP实现取得HTTP请求的原文
2014/08/18 PHP
php模板引擎技术简单实现
2016/03/15 PHP
contains和compareDocumentPosition 方法来确定是否HTML节点间的关系
2011/09/13 Javascript
Jquery实现兼容各大浏览器的Enter回车切换输入焦点的方法
2014/09/01 Javascript
浅谈重写window对象的方法
2014/12/29 Javascript
js实现按钮颜色渐变动画效果
2015/08/20 Javascript
初步了解javascript面向对象
2015/11/09 Javascript
JavaScript中的闭包
2016/02/24 Javascript
JS判断来路是否是百度等搜索索引进行弹窗或自动跳转的实现代码
2016/10/09 Javascript
JS库之Highlight.js的用法详解
2017/09/13 Javascript
微信小程序顶部可滚动导航效果
2017/10/31 Javascript
基于node下的http小爬虫的示例代码
2018/01/11 Javascript
Vue服务器渲染Nuxt学习笔记
2018/01/31 Javascript
jQuery实现的简单歌词滚动功能示例
2019/01/07 jQuery
vue2 拖动排序 vuedraggable组件的实现
2019/08/08 Javascript
封装Vue Element的table表格组件的示例详解
2020/08/19 Javascript
[03:01]DOTA2英雄基础教程 露娜
2014/01/07 DOTA
python变量不能以数字打头详解
2016/07/06 Python
Python numpy数组转置与轴变换
2019/11/15 Python
python创建学生成绩管理系统
2019/11/22 Python
python求一个字符串的所有排列的实现方法
2020/02/04 Python
python palywright库基本使用
2021/01/21 Python
美国本地交易和折扣网站:LocalFlavor.com
2017/10/26 全球购物
PacSun官网:加州生活方式服装、鞋子和配饰
2018/03/10 全球购物
美国在线家居装饰店:Belle&June
2018/10/24 全球购物
求职自荐信范文格式
2013/11/29 职场文书
乡镇精神文明建设汇报材料
2014/08/15 职场文书
见习报告的格式
2014/11/04 职场文书
实践论读书笔记
2015/06/29 职场文书
元宵节晚会主持词
2015/07/01 职场文书
小学2016年“我们的节日·重阳节”活动总结
2016/04/01 职场文书
2016年学校禁毒宣传活动工作总结
2016/04/05 职场文书
Python中tkinter的用户登录管理的实现
2021/04/22 Python
PyTorch 如何自动计算梯度
2021/05/23 Python
Python Matplotlib绘制动画的代码详解
2022/05/30 Python