有人可以解释为什么第一个代码块输出只是重复“ T”而第二个代码块有效吗?
第一个代码块:

function typeWriter() {
  var i = 0,
  txt = 'Testing',
  speed = 40,
  typed = document.getElementById('typewriter');

  (function addChar() {
    if (i < txt.length) {
      typed.innerHTML += txt.charAt(i);
      i++;
      setTimeout(typeWriter, speed);
    }
  })();
}

document.onload = typeWriter();


第二个代码块:

var i = 0,
  txt = 'Testing',
  speed = 40;

function typeWriter() {
  if (i < txt.length) {
    document.getElementById('typewriter').innerHTML += txt.charAt(i);
    i++;
    setTimeout(typeWriter, speed);
  }
}

最佳答案

在第一个代码块中,每次typeWriter()调用都将i = 0设置为零,因此您始终会得到“ T”。在第二个中,我在typeWriter()之外定义,因此它的值在两次调用之间保持不变。

10-08 16:47