Javascript中的可选参数是如何工作的?
摘自w3在线教程:Javascript中的可选参数是如何工作的?,javascript,function,Javascript,Function,摘自w3在线教程: $("button").click(function(){ $("#div1").load("demo_test.txt", function(responseTxt, statusTxt, xhr){ if(statusTxt == "success") alert("External content loaded successfully!"); if(statusTxt == "error")
$("button").click(function(){
$("#div1").load("demo_test.txt", function(responseTxt, statusTxt, xhr){
if(statusTxt == "success")
alert("External content loaded successfully!");
if(statusTxt == "error")
alert("Error: " + xhr.status + ": " + xhr.statusText);
});
});
函数调用如何知道正在传递哪些参数,比如说您只传递
statusTxt
和xhr
,或者您只想传递xhr
请对我放松点:)这是我第一个问题,这叫做回调。你不知道这就是为什么你在使用任何东西之前先阅读文档的原因。回调无法发送响应。或者可以将大量数据发送回。在你的情况下,从文件
我们将返回3个参数。但每个库都有自己的文档和返回结果。希望这有帮助。这叫做回调。你不知道这就是为什么你在使用任何东西之前先阅读文档的原因。回调无法发送响应。或者可以将大量数据发送回。在你的情况下,从文件
我们将返回3个参数。但每个库都有自己的文档和返回结果。希望这有帮助。它按传递给它的内容的顺序排列 就拿下面这个例子来说,
function test(callback) {
var x = 1,
y = 2,
z = 3;
if (typeof callback == 'function')
callback(x, y, z);
}
test(function (z, y, x) {
console.log(z);
});
输出是,
1
因为在原始代码中,我首先将等于1
的x
传递给回调
。我给它取什么名字并不重要。传递给它的函数称为函数
注意
为了解释检查的
类型,我正在检查传递的变量是否实际上是一个函数,尽管在本测试中,它将成为一个函数,但在使用回调时,确保验证它总是很好的。它按照传递给它的内容的顺序进行
就拿下面这个例子来说,
function test(callback) {
var x = 1,
y = 2,
z = 3;
if (typeof callback == 'function')
callback(x, y, z);
}
test(function (z, y, x) {
console.log(z);
});
输出是,
1
因为在原始代码中,我首先将等于1
的x
传递给回调
。我给它取什么名字并不重要。传递给它的函数称为函数
注意
为了解释检查的类型,我正在检查传递的变量是否实际上是一个函数,尽管在本测试中,它将成为一个函数,但在使用回调时,确保验证它总是很好的。它是基于参数顺序进行的,你不能只传递第二个或第三个参数
在您的示例中,如果传入一个参数,它将是responseText
,两个参数将是responseText
和statusTxt
。如果只想传递statusTxt
,则必须为responseText
传递一个null
,然后根据参数顺序传递statusTxt
的值,并且不能自己传递第二个或第三个参数
在您的示例中,如果传入一个参数,它将是responseText
,两个参数将是responseText
和statusTxt
。如果只想传递statusTxt
,则必须为responseText
传递null
,然后为statusTxt
传递值,因为它从左到右分配从fnction调用传递的每个参数。假设您有这个函数,是从您那里复制的:
function someFunction(responseTxt, statusTxt, xhr){
if(statusTxt == "success")
alert("External content loaded successfully!");
if(statusTxt == "error")
alert("Error: " + xhr.status + ": " + xhr.statusText);
}
您希望在调用此函数时为变量statusTxt:“success”和xhr传递值。如果您这样调用函数:
someFunction(“成功”,你的未来)
这意味着“成功”将分配给参数responseText,而您的\u xhr将分配给statusTxt
通常,您只需将responseText设置为null,并将其余设置为所需,例如:
someFunction(null,“success”,您的\u xhr)
或者在函数定义中使用对象文字。下面是一个例子:
function someFunction(options){
if(options.statusTxt == "success")
alert("External content loaded successfully!");
if(options.statusTxt == "error")
alert("Error: " + options.xhr.status + ": " + options.xhr.statusText);
}
您的函数调用如下所示:
someFunction({statusTxt:“success”,xhr:your_xhr})
当然,如果不使用ResponseText,您需要检查它是否未定义
希望这有帮助。简单地说,它不会,因为它会从左到右分配从fnction调用传递的每个参数。假设您有这个函数,是从您那里复制的:
function someFunction(responseTxt, statusTxt, xhr){
if(statusTxt == "success")
alert("External content loaded successfully!");
if(statusTxt == "error")
alert("Error: " + xhr.status + ": " + xhr.statusText);
}
您希望在调用此函数时为变量statusTxt:“success”和xhr传递值。如果您这样调用函数:
someFunction(“成功”,你的未来)
这意味着“成功”将分配给参数responseText,而您的\u xhr将分配给statusTxt
通常,您只需将responseText设置为null,并将其余设置为所需,例如:
someFunction(null,“success”,您的\u xhr)
或者在函数定义中使用对象文字。下面是一个例子:
function someFunction(options){
if(options.statusTxt == "success")
alert("External content loaded successfully!");
if(options.statusTxt == "error")
alert("Error: " + options.xhr.status + ": " + options.xhr.statusText);
}
您的函数调用如下所示:
someFunction({statusTxt:“success”,xhr:your_xhr})
当然,如果不使用ResponseText,您需要检查它是否未定义
希望这有帮助。你按顺序去做。所以你使用第一个参数,你得到他们传递的第一个参数,检查我下面的答案以获得更多帮助。因为这是一个回调函数,你不能决定传递哪些参数。它们通过.load()
传递给您的函数,并且它总是传递所有这些函数。不过,你可以忽略那些你不在乎的,你要按顺序去做。所以你使用第一个参数,你得到他们传递的第一个参数,检查我下面的答案以获得更多帮助。因为这是一个回调函数,你不能决定传递哪些参数。它们通过.load()
传递给您的函数,并且它总是传递所有这些函数。不过,你可以忽略那些你不关心的问题。这是一个完美的答案,完全让我不再认为这与匹配exa有关