Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.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/4/c/68.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 将变量设置为回调函数的返回值_Javascript_Callback - Fatal编程技术网

Javascript 将变量设置为回调函数的返回值

Javascript 将变量设置为回调函数的返回值,javascript,callback,Javascript,Callback,getElementId函数: function getIdElements(idname, callback) { callback(document.getElementById(idname)) }; 我想这样使用它,但是plLen得到未定义的: var plLen = getIdElements("length", function(e){return e.textContent}); 如果有人能尽可能深入地解释,我会很高兴的。谢谢。您只需返回回调返回的值: function

getElementId函数

function getIdElements(idname, callback) {
    callback(document.getElementById(idname))
};
我想这样使用它,但是
plLen
得到
未定义的

var plLen = getIdElements("length", function(e){return e.textContent});

如果有人能尽可能深入地解释,我会很高兴的。谢谢。

您只需返回回调返回的值:

function getIdElements(idname, callback) {
     return callback(document.getElementById(idname));
}
这与从回调中获取返回值并返回它几乎相同。下面是一个详细的版本:

function getIdElements(idname, callback) {
     var element = document.getElementById(idname);
     var callbackRetrunValue = callback(element);
     return callbackRetrunValue;
}

在您的代码中:没有返回值,您从
GetIdeElements
读取的值只是
未定义的值:

您可以简单地返回回调返回的值:

function getIdElements(idname, callback) {
     return callback(document.getElementById(idname));
}
这与从回调中获取返回值并返回它几乎相同。下面是一个详细的版本:

function getIdElements(idname, callback) {
     var element = document.getElementById(idname);
     var callbackRetrunValue = callback(element);
     return callbackRetrunValue;
}

在您的代码中:没有
return
值,您从
getIdeElements
读取的值只是
未定义的

很好,但我想知道为什么我的版本没有像我预期的那样工作。@Johnny:因为您没有返回
回调
返回的值。您只需忽略
回调
的返回值。为True,但我从
GetIdeElements
中的另一个函数返回的值不应该与我在其中返回的值同时关闭?@Johnny:不,当然不是。这意味着您只能在另一个函数中调用一个函数。假设有两个函数
foo
bar
。您知道它们在做什么,但不知道它们是否返回值。现在您有了一个函数
函数baz(){foo();bar();}
。根据您的逻辑,如果
foo
返回一个值,
baz
也将返回该值,
bar
甚至不会执行。那太不直观了。这意味着您必须始终知道函数是如何实现的,这在一开始就完全无法创建用于抽象的函数。@Johnny-No:return适用于当前函数。唯一像你描述的那样有效的是。有一些语言“自动”返回最后一个值,但JavaScript不是其中之一(例如,或Scheme)。很好,但我想知道为什么我的版本没有按我的预期工作。@Johnny:因为你没有返回
回调
返回的值。您只需忽略
回调
的返回值。为True,但我从
GetIdeElements
中的另一个函数返回的值不应该与我在其中返回的值同时关闭?@Johnny:不,当然不是。这意味着您只能在另一个函数中调用一个函数。假设有两个函数
foo
bar
。您知道它们在做什么,但不知道它们是否返回值。现在您有了一个函数
函数baz(){foo();bar();}
。根据您的逻辑,如果
foo
返回一个值,
baz
也将返回该值,
bar
甚至不会执行。那太不直观了。这意味着您必须始终知道函数是如何实现的,这在一开始就完全无法创建用于抽象的函数。@Johnny-No:return适用于当前函数。唯一像你描述的那样有效的是。有些语言“自动”返回最后一个值,但JavaScript不是其中之一(例如,或Scheme)。