gpt4 book ai didi

javascript - 为什么 setTimeout 无法识别函数名称?

转载 作者:行者123 更新时间:2023-12-02 17:08:42 43 4
gpt4 key购买 nike

(function( $ ){

$.fn.hash = function(){

function activate()
{
setTimeout('checkHash()', 100);
}

activate();

var previousHashTag = location.hash;

var previousHashProperty = '';

function checkHash()
{
if( previousHashTag !== location.hash )
{
$('body').trigger("hashchange", [ getHashObj() ]);
previousHashTag = location.hash;
setTimeout( "checkHash()", 200);
}
setTimeout( "checkHash()", 100);
}

这是我正在尝试制作的哈希插件。我想在用户加载插件时调用 activate() 函数。activate 函数会设置一个超时,每 100 毫秒检查一次哈希值。由于 checkHash 位于该对象的函数之外,我该如何实现这一点?

最佳答案

您在setTimeout中使用字符串参数,这意味着代码将在全局对象中运行。由于您的被调用函数是在另一个函数的闭包内定义的,因此您必须传递引用

setTimeout(checkHash, 100);

或者使用匿名函数

setTimeout(function(){
checkHash();
});

当您想要将任何参数传递给从 setTimeout 调用的函数时,您必须使用第二种方法。

setTimeout(function(){
checkHash(arg);
});

关于javascript - 为什么 setTimeout 无法识别函数名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25014963/

43 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com