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

Javascript 从构造函数返回的原语值将丢失,javascript,jquery,Javascript,Jquery,我创建了一个函数: function CheckHidden(el){ return $(el).css('display')!='none' } 我的IDE警告我: 当使用“new”调用时,从构造函数返回的原语值将丢失 实际上,当我这样称呼它时: var all = $("#catalog-body > div").filter(function(){return CheckHidden(this)}) 它不起作用,也不会将元素集减少为未隐藏的元素。 请给我解释一下这个问题。我非常

我创建了一个函数:

function CheckHidden(el){ return $(el).css('display')!='none' }
我的IDE警告我:

当使用“new”调用时,从构造函数返回的原语值将丢失

实际上,当我这样称呼它时:

var all = $("#catalog-body > div").filter(function(){return  CheckHidden(this)})
它不起作用,也不会将元素集减少为未隐藏的元素。
请给我解释一下这个问题。我非常缺乏知识。

jQuery实际上内置了类似的功能。您可以使用选择器。您只需执行以下操作:

var all=$("#catalog-body > div").filter(':visible')

获取可见元素。

jQuery实际上内置了类似这样的功能。您可以使用选择器。您只需执行以下操作:

var all=$("#catalog-body > div").filter(':visible')

获取可见元素。

如果要提取所有可见元素,可以使用:

相反,如果要提取所有隐藏的图元,可以将其与以下内容结合使用:


如果要提取所有可见的图元,可以使用:

相反,如果要提取所有隐藏的图元,可以将其与以下内容结合使用:


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

函数

function CheckHidden() {
    return false;
}
将返回两个不同的值,具体取决于执行方式

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

// "a" is an object of type "CheckHidden"
var a = new CheckHidden();

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

函数

function CheckHidden() {
    return false;
}
将返回两个不同的值,具体取决于执行方式

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

// "a" is an object of type "CheckHidden"
var a = new CheckHidden();

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


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

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


但是,您仍然应该使用jQuery的:visible选择器来解决您的特定问题。

一个问题中有多个问题。哪一个最能描述您的问题?我不确定您使用的是哪一个IDE,但这是特定于IDE而不是JavaScript的。如果你有一个从未用new实例化的方法,那么忽略这个警告。哪一个最能描述您的问题?我不确定您使用的是哪一个IDE,但这是特定于IDE而不是JavaScript的。如果您有一个从未使用new实例化的方法,请忽略该警告。如果您不想将函数名更改为小写,可以在函数上方使用
/***@返回{boolean}*/
注释行来避免该警告。如果您不想将函数名更改为小写,您可以使用函数上方的
/***@returns{boolean}*/
注释行来避免警告。