由setTimeout

时间:2019-08-01 17:55:19

标签: javascript jquery

我试图在scroll_page所调用的函数call_scroll_page中调用函数setTimeout。而且出现错误file.js:5 Uncaught TypeError: scroll_page is not a function

function scroll_page() {
    return false;
}
function call_scroll_page() {
    var scroll_page = scroll_page();
    if(!scroll_page) {
        $test = true;
    }
}
setTimeout(call_scroll_page, 1000);

3 个答案:

答案 0 :(得分:1)

var scroll_page 

您在scroll_page函数中定义了一个名为call_scroll_page的新变量,该变量掩盖了全局变量。

重命名该变量。

答案 1 :(得分:1)

这是因为您要声明一个与函数名称相同的var。因此,在函数call_scroll_page()中,scroll_page引用局部变量。更改您的变量名称,它将按预期工作。

function scroll_page() {
    return false;
}
function call_scroll_page() {
    var scroll_page_var = scroll_page();
    if(!scroll_page_var) {
        $test = true;
    }
}
setTimeout(call_scroll_page, 1000);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>

答案 2 :(得分:1)

此行导致错误:var scroll_page = scroll_page();

请勿重新声明具有scroll_page函数名称的内容。

它将删除该函数的链接,并替换为变量,从而调用不再“可通过其名称调用”的函数。

尝试:

function scroll_page() {
    return false;
}
function call_scroll_page() {
    var fn = scroll_page();
    if(!fn) {
        $test = true;
    }
}
setTimeout(call_scroll_page, 1000);