typeof、undefined,一个易犯的错误

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

_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);
}

posted @ 2017-07-14 15:06  hongweigg  阅读(46)  评论(0)    收藏  举报