使用JS-Cookie开发点击器游戏时函数仅生效一次的原因是什么?
核心问题
你代码的核心问题出在addClick函数的变量作用域逻辑错误:
你在refreshCookies的定时器回调中用let声明的value是块级局部变量,仅在回调函数内部可访问,addClick里直接使用的value属于未声明变量,首次执行可能刚好读取到Cookie初始值产生生效的错觉,后续parseInt(undefined)会得到NaN,写入Cookie的数值非法,自然不会再更新。
修复方案
修改addClick函数,每次调用时先主动从Cookie读取当前value值,不存在的话设置默认值0,计算完成后再写入Cookie即可:
function addClick() { // 读取当前Cookie存储的数值,缺省默认值为0 const currentValue = parseInt(Cookies.get('value')) || 0; Cookies.set('value', currentValue + 1); console.log('click added!'); }
额外优化建议
定时器的时间参数不要写0500,前导零在JS部分运行环境会被识别为八进制数字,实际运行间隔和你预期的500ms不符,直接写500即可。
内容的提问来源于stack exchange,提问作者DevOffline
相关产品推荐
相关产品推荐

