javascript - 努力了解某些函数参数的值是如何确定的
问题描述
我经常不明白某些函数参数的值是如何确定的。以下面的代码片段为例:
function gotItAll(res) {
$('#actionscreen').modal('hide')
if (res.ErrorHtml != "" && res.ErrorHtml.substring(0,31) != "Error copying to sub data table") {
document.getElementById('GridView').innerHTML = res.ErrorHtml;
InfoMessage("Error", res.ErrorHtml);
} else {
if (res.BrowseTreeBreadCrumbs != null) {
//generateBrowseTreeHtml(res);
sessionStorage.setItem("browseTreeBC", res.BrowseTreeBreadCrumbs);
if (res.BrowseTreeBreadCrumbs.indexOf("-1") > 0 || res.BrowseTreeBreadCrumbs.indexOf("- -1") > 0 || res.BrowseTreeBreadCrumbs.indexOf("- -999") > 0 || res.BrowseTreeBreadCrumbs.indexOf("-999") > 0 || res.BrowseTreeBreadCrumbs.indexOf("-999") > 0 || res.BrowseTreeBreadCrumbs.indexOf("</b> </span") > 0) {
$('#breadCrumbsID').hide();
}
}
BaseTable = res.TableName;
recs = res.records;
'res' 是一个我在任何地方都找不到定义的参数,但它返回一个值。我无法确定在哪里调用了 gotItAll() 并传递了 res 以外的值。此外,我们还有 res.ErrorHtml、res.BrowseTreeBreadCrumbs.indexOf、res.TableName 等,它们似乎没有在任何地方定义,但它们都返回不同的值。
解决方案
您发布的代码片段只是功能declaration
。基本上,snipper 定义了一个名为 的函数的存在,该函数gotItAll
将一个参数作为输入。参数被调用res
,所以在函数内部,这个词res
是指函数的参数。
让我们以一个简单的函数为例:
function double(x) {
return x * 2
}
此函数也作为参数,称为x
. 在函数内部,您将其称为x
.
当你想要use
函数时,你调用函数并给你一个参数,例如:
double(2) // returns 4
double(4) // returns 8
double(7) // returns 14
如您所见,我们可以向函数传递double
不同的值。当您调用 时double(4)
,基本上该函数会考虑x = 4
,因此每次在您使用的函数声明x
中,您都将使用该值4
。
您还可以将不同的变量传递给函数:
var y = 10
double(y) // returns 20
和以前一样,你给函数变量y
,其值为 10。所以基本上程序x = y
会这样做,并且每次它在函数声明中引用时x
,都会使用 的值y
。
回到你的例子。我不知道该函数的作用,但基本上res
是将传递给函数的参数的占位符名称。可以从代码周围调用gotItAll(variableName)
该函数,并且该函数将被执行考虑res = variableName
。在您粘贴的狙击手中,仅声明了该函数,但没有该函数的实际用法示例,这就是为什么您看不到res
来自何处的原因。
编辑:在您发表评论后,我意识到您实际上指的是什么。实际上,在 Javascript 中,您可以将函数作为另一个函数的参数传递。double
以上面声明的函数为例。现在我想创建一个函数,只有当它们是偶数时才将数字加倍。我可以声明:
function doubleEven(x, doublingFunction) {
if (x % 2 === 0) {
return doublingFunction(x)
} else {
return x
}
}
我可以将其用作:
doubleEven(2, double) // returns 4
doubleEven(5, double) // returns 5
基本上,我double
作为参数传递给doubleEven
函数。所以,在doubleEven
声明内部,doublingFunction
等于double
,所以它是一个函数。
当然在这个例子中这是愚蠢的,没有必要传递一个函数来加倍一个数字。然而,这在 javascript 中被大量使用,以提供对异步任务的回调,例如网络请求。
推荐阅读
- google-chrome - 控制铬中的动量滚动
- java - 无法写入文件 - JAVA Servlets
- ios - 隐藏一个 UIView 并显示另一个
- html - 添加自动完成以在 html 表单中选择下拉菜单
- vue.js - 自动对象变异Vuejs
- abstract - 实施集
- android - 在第三个活动中使用获取意图时出错代码在这里
- r - 对 R data.table 的每一列进行排序
- java - 为什么 gradle 在 :app:lint 期间尝试下载 Kotlin 编译器?
- spring-boot - 如何将请求重定向到使用 Jetty AsyncProxyServlet 在标头中传递的 URI