Javascript JS:Callback不是if-else语句中的函数
使用google chrome编译时,函数的else语句中无法识别回调。尝试运行以下代码时,我的site.js文件中出现错误:Javascript JS:Callback不是if-else语句中的函数,javascript,ajax,google-chrome,callback,Javascript,Ajax,Google Chrome,Callback,使用google chrome编译时,函数的else语句中无法识别回调。尝试运行以下代码时,我的site.js文件中出现错误: function changeSetting(callback) { var testswitch = document.getElementById("switch"); if (testswitch.checked) { $.ajax({ type: 'GET', url: '/api/
function changeSetting(callback) {
var testswitch = document.getElementById("switch");
if (testswitch.checked) {
$.ajax({
type: 'GET',
url: '/api/ct/off/changeSetting',
cache: false,
error: function (jqXHR, textStatus, errorThrown) {
},
success: function (result) {
//No error here
callback();
}
});
}
else if (!testswitch.checked) {
$.ajax({
type: 'GET',
url: '/api/ct/on/changeSetting',
cache: false,
error: function (jqXHR, textStatus, errorThrown) {
},
success: function (result) {
//ERROR: Callback is not recognized as a function
callback();
}
});
} else {
return;
}
}
正在调用的此函数的唯一实例是
changeSetting(displayEmail());
未捕获类型错误:回调不是函数仅传递displayEmail,而不是在changeSetting函数的参数中调用它
changeSetting(displayEmail);
仅传递displayEmail,而不是在changeSetting函数的参数中调用它
changeSetting(displayEmail);
问题在于函数调用
<script>
function changeSetting(callback) {
....
}
function displayEmail() {
return "email displayed"; // dummy value in this case
}
</script>
请注意,我们正在使用parantises()
调用displayEmail()
函数。这意味着我们将运行它并返回它的返回值
,无论它是未定义的,还是在我们的例子中是“显示的电子邮件”
对作为回调传递的函数求值后,它会简化为非函数,因此会出现错误。就Psuedo而言,它将“简化”到这一点
要解决此问题,只需先不调用函数,将指针传递到函数,即displayEmail
changeSetting(displayEmail);
问题在于函数调用
<script>
function changeSetting(callback) {
....
}
function displayEmail() {
return "email displayed"; // dummy value in this case
}
</script>
请注意,我们正在使用parantises()
调用displayEmail()
函数。这意味着我们将运行它并返回它的返回值
,无论它是未定义的,还是在我们的例子中是“显示的电子邮件”
对作为回调传递的函数求值后,它会简化为非函数,因此会出现错误。就Psuedo而言,它将“简化”到这一点
要解决此问题,只需先不调用函数,将指针传递到函数,即displayEmail
changeSetting(displayEmail);
displayEmail()
是对函数的调用,因此返回值将作为参数传递。尝试传递displayEmail
instead,但我想调用回调函数。删除()也不起作用。我把我的措辞弄乱了,对不起,我的意思是displaymail
!保持回调参数的原样displayEmail()
是函数调用,因此返回值将作为参数传递。尝试传递displayEmail
instead,但我想调用回调函数。删除()也不起作用。我把我的措辞弄乱了,对不起,我的意思是displaymail
!保持回调参数的原样,如果我有一个三链的回调函数呢changeSetting(函数(){changeTemp(displayEmail);});`如果我有一个三链的回调函数呢changeSetting(函数(){changeTemp(displayEmail);});`这样做也会导致错误