从构造函数返回的原始值将丢失

Ale*_* Ho 18 javascript jquery

我创建了一个函数:

function CheckHidden(el){ return $(el).css('display')!='none' }
Run Code Online (Sandbox Code Playgroud)

我的IDE警告我:

使用'new'调用时,构造函数返回的原始值将丢失

实际上当我这样称呼时:

var all = $("#catalog-body > div").filter(function(){return  CheckHidden(this)})
Run Code Online (Sandbox Code Playgroud)

它不起作用,也不会将元素集减少到未隐藏的元素集.请向我解释这个问题.我缺乏知识.

小智 77

我自己遇到了这个警告,如果你想知道原因,那是因为你的IDE期望函数名以小写字母开头.由于您的函数名为CheckHidden,其大写字母为C,因此它认为它是一个类声明.

但是,您仍然应该使用jQuery的:visible选择器来修复您的特定问题.

  • 如果您不想将函数名称更改为小写,可以在函数上方使用/ ** * @returns {boolean} * /`注释行来避免该警告。 (2认同)

fee*_*ela 11

如果使用关键字创建对象new(如警告中所述),JS将返回对象的新实例,而不是构造函数的返回值.

功能就像

function CheckHidden() {
    return false;
}
Run Code Online (Sandbox Code Playgroud)

将返回两个不同的值,具体取决于它的执行方式.

// "a" is boolean value
var a = CheckHidden();

// "a" is an object of type "CheckHidden"
var a = new CheckHidden();
Run Code Online (Sandbox Code Playgroud)