从构造函数返回的基元值将丢失

Primitive value returned from constructor will be lost

本文关键字:构造函数 返回      更新时间:2023-09-26

我创建了一个函数:

function CheckHidden(el){ return $(el).css('display')!='none' }

我的IDE警告我:

当使用"new"调用时,从构造函数返回的基元值将丢失

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

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

它不起作用,也不会将元素集减少为未隐藏的元素。请向我解释一下这个问题。我非常缺乏知识。

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

但是,您仍然应该使用jQuery的: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();
jQuery实际上内置了类似的东西。您可以使用:visible选择器。你可以做:
var all=$("#catalog-body > div").filter(':visible')

以获取可见元素。

如果您想提取所有可见的元素,可以使用jQuery的:visible选择器:

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

相反,如果你想提取所有隐藏的元素,你可以将其与jQuery的:not选择器结合起来:

$("#catalog-body > div:not(:visible)")