You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

传入方法的字符串首次循环后变为undefined类型的原因及解决办法

问题解决:打字效果函数参数丢失导致执行中断

问题原因

第一次调用typeEffect时传入了字符串参数,但在setTimeout里调用函数时没有传递任何参数,导致后续执行时printedText变成undefined,触发类型判断分支后函数直接退出,无法完成完整的打字效果。

修复后的代码

const headingUpper = "Hello";
const speed = 50; // speed milleseconds
let count = 0;
let printedText;

typeEffect(headingUpper, "headingUpper");

function typeEffect(printedText, target) {
    if ((typeof printedText) === ("string")) {
        if (count < printedText.length) {
            document.getElementById(target).innerHTML += printedText.charAt(count);
            count++;
            // 方式1:用箭头函数包裹,传递参数(兼容性更好)
            setTimeout(() => typeEffect(printedText, target), speed);
            // 方式2:直接在setTimeout后追加参数(现代浏览器兼容)
            // setTimeout(typeEffect, speed, printedText, target);
        }
    }
}

补充说明

  • 方式1的箭头函数包裹写法适配所有浏览器环境;
  • 方式2利用setTimeout的后续参数作为回调入参,现代浏览器支持但旧版IE不兼容。

内容的提问来源于stack exchange,提问作者SoSages

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 02:24:56