typeof、undefined,一个易犯的错误

来源:互联网 发布:android 棋牌游戏源码 编辑:程序博客网 时间:2024/06/06 03:49

先看一段代码,为一个翻页页码框响应事件:

_gotoPage_handler: function(ev){    //若为页码输入框则只响应回车键事    if(typeof(ev.keyCode) != undefined && ev.keyCode != 13) return;    //...    this.fire('gotoPage',pageNo);}

这段代码本意是当页码输入框敲回车时才响应,否则按其他键则不响应。但是结果确是后面的代码永远得不到执行。

说明:

因为翻页按钮和页面输入框的keyDown事件均调用该方法,故需要做事件的keyCode判断,如果keyCode不为空,则是页码输入框触发的事件,否则为翻页按钮触发事件。当页码输入框触发事件时,只有为回车键时才执行下面的程序。

原因是什么呢?原来typeof()函数返回结果是字符串,字符串是不会等于undefined的,多么可恶的一个错误啊!

正确的做法是typeof() 与“undefined”字符串进行比较,见下面的代码:

_gotoPage_handler: function(ev){    //若为页码输入框则只响应回车键事    if(typeof(ev.keyCode) != "undefined" && ev.keyCode != 13) return;    //...    this.fire('gotoPage',pageNo);}