Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 什么';s不带';不接受函数作为参数_Javascript_Jquery - Fatal编程技术网

Javascript 什么';s不带';不接受函数作为参数

Javascript 什么';s不带';不接受函数作为参数,javascript,jquery,Javascript,Jquery,这是一个理论问题: 是否有一个通用名称来引用所有不接受函数作为参数的jQuery函数? 例如索引()、子项()、高度() 更新: 如果我知道这个名字,我可以问这样一个问题:“我能把一个函数传递给一个“命名”的函数吗?” 更详细地说,我尝试将函数作为参数传递给jQuery的.index()方法,但它不起作用: textbox.closest('tr').index(function(){var index = $(this);}); 所有接受参数的jQuery函数都可以接受函数。在JavaS

这是一个理论问题:

是否有一个通用名称来引用所有不接受函数作为参数的jQuery函数? 例如索引()、子项()、高度()

更新: 如果我知道这个名字,我可以问这样一个问题:“我能把一个函数传递给一个“命名”的函数吗?”

更详细地说,我尝试将函数作为参数传递给jQuery的
.index()
方法,但它不起作用:

 textbox.closest('tr').index(function(){var index = $(this);}); 

所有接受参数的jQuery函数都可以接受函数。在JavaScript中,函数是对象,jQuery和vanilla JavaScript都不是类型安全的。换句话说,只要函数接受参数,它就会接受函数作为其参数之一

因此,不接受任何参数的方法是唯一不接受函数的方法


编辑:

如果您想获得技术性的支持,那么即使是不接受任何参数的方法也会接受函数作为参数。正如JavaScript不是类型安全的一样,它实际上也没有强制执行有关函数签名的任何规则,即它没有检查输入的参数数量是否与定义的参数数量匹配。这就是为什么会出现“null reference”错误(如果未处理)而不是“no function[function name]接受参数[arguments list]”。这也是为什么您可以向函数传递数量不限的参数,即使它只需要一个、两个或一个都不需要


更新:

关于我对您最初问题的解决方案,我想补充一点,即jQuery是一种可靠的语言,因为当传递无效参数时,它通常只返回null(但当传递的参数数量不正确时,它不会出错)。JavaScript在很多情况下都是一样的,但是,正如我所暗示的和常识所指示的,无论合法性如何,向方法传递太多或太少的参数都是毫无意义的

关于您的更新和评论,我认为您误解了jQuery的
.index()
方法的基本用法。如果使用得当,将对元素集合调用此方法,并将选择器(或要匹配的元素)作为参数,并返回满足给定选择器或匹配给定元素的元素第一次出现的索引


更新:

从您更新的示例中,我可以看出我正确地认为您对
.index()
函数的使用有点误解。该函数接受选择器或元素,但传递的函数也不返回。以下是您需要的(使用现有语法):

或者(更简单地说):

要添加更多的细节(也许更好地回答您的初始问题),您还可以执行以下操作:

function getOnlyParagraphElements() {
    return this.tagName === "p";
}

var collection = $("body").find("*");
var firstParaIndex = collection.index(getOnlyParagraphElements);
这只是一个例子(是的,我知道我可以使用jQuery来获取段落),但概念是一样的——这就是如何创建自己的选择器


还请注意,在您的示例中,您总是针对一个项目集合进行检查,这意味着您将只获得值
0
或值
-1
(如果元素与选择器/传入元素不匹配)。如果您的目标是获取调用该方法的元素相对于其同级的索引,则只需调用该方法而不提供任何参数。

所有接受参数的jQuery函数都可以接受函数。在JavaScript中,函数是对象,jQuery和vanilla JavaScript都不是类型安全的。换句话说,只要函数接受参数,它就会接受函数作为其参数之一

因此,不接受任何参数的方法是唯一不接受函数的方法


编辑:

如果您想获得技术性的支持,那么即使是不接受任何参数的方法也会接受函数作为参数。正如JavaScript不是类型安全的一样,它实际上也没有强制执行有关函数签名的任何规则,即它没有检查输入的参数数量是否与定义的参数数量匹配。这就是为什么会出现“null reference”错误(如果未处理)而不是“no function[function name]接受参数[arguments list]”。这也是为什么您可以向函数传递数量不限的参数,即使它只需要一个、两个或一个都不需要


更新:

关于我对您最初问题的解决方案,我想补充一点,即jQuery是一种可靠的语言,因为当传递无效参数时,它通常只返回null(但当传递的参数数量不正确时,它不会出错)。JavaScript在很多情况下都是一样的,但是,正如我所暗示的和常识所指示的,无论合法性如何,向方法传递太多或太少的参数都是毫无意义的

关于您的更新和评论,我认为您误解了jQuery的
.index()
方法的基本用法。如果使用得当,将对元素集合调用此方法,并将选择器(或要匹配的元素)作为参数,并返回满足给定选择器或匹配给定元素的元素第一次出现的索引


更新:

从您更新的示例中,我可以看出我正确地认为您对
.index()
函数的使用有点误解。该函数接受选择器或元素,但传递的函数也不返回。以下是您需要的(使用现有语法):

或(m)
textbox.closest('tr').index($(this));
function getOnlyParagraphElements() {
    return this.tagName === "p";
}

var collection = $("body").find("*");
var firstParaIndex = collection.index(getOnlyParagraphElements);