Javascript JS:Callback不是if-else语句中的函数

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/

使用google chrome编译时,函数的else语句中无法识别回调。尝试运行以下代码时,我的site.js文件中出现错误:

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);});`这样做也会导致错误