首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >函数的广义.length检验

问函数的广义.length检验
EN

Stack Overflow用户
提问于 2010-02-15 22:26:59
回答 2查看 142关注 0票数 2

当我用JS或jQuery编写函数,并且需要一个参数时,我会使用if something.length技巧……

代码语言:javascript
复制
this.example = function(e) {
  if ($(e).length) {
    /*blablabla*/
  } else {
    return false;
  }
}

但我不想在所有函数中都这样做。有没有一种方法可以概括这一点?

像这样:

代码语言:javascript
复制
this.ck = function(e) {
  return function(e){
    if (!(e.length)) { return false;}
  }
}

this.example = function(e) {
     ck(e)
    /*blablabla*/

}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-02-15 22:50:57

也许是这样,但请看以下内容:

代码语言:javascript
复制
function ifNonEmpty(f) {
  return function(e) {
    if (!$(e).length) return false;
    return f(e);
  };
}

你可以这样使用它:

代码语言:javascript
复制
var myCoolFunction = ifNonEmpty(function myCoolFunction(e) {
  // your implementation
};

但是,我建议您将这些函数编写为您自己的jQuery插件,而不是编写将jQuery对象作为参数的函数。

票数 2
EN

Stack Overflow用户

发布于 2010-02-15 23:19:40

我会提出以下建议。

此示例将首先测试参数是否实际包含任何内容(即不为null),然后.length检查是否包含

代码语言:javascript
复制
function isNonEmpty(p){
    if ( (p != null) && (p.length > 0) ){
        //test
    }
}

无论如何,我会对使用.length保持警惕。例如,如果你传递一个字符串,.length将会有一个值!

要测试某个对象是否为jQuery对象,请执行以下操作:

代码语言:javascript
复制
alert(p instanceof jQuery); //will alert "true" if p is a jQuery object.

因此,这给了我们:

代码语言:javascript
复制
function isNonEmpty(p){
    if ( (p != null) && (p instanceof jQuery) && (p.length > 0) ){
        //test
    }
}

或者类似的东西。无论哪种方式,都应该有足够的代码来定制您的意图。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2266528

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档