【问题标题】:Why does this function CPS function work in Chrome but not other browsers?为什么这个功能 CPS 功能在 Chrome 中有效,而在其他浏览器中无效?
【发布时间】:2015-10-21 02:30:13
【问题描述】:

我试图执行这个关于 CPS 的简单代码。 这适用于 Chrome 43,但不适用于 Firefox 和 Opera ... 怎么了 ? (所以 Linux Mint 17)

(function(){

  var i = 0;
  function forloop(){
    if(i<10){
      document.write(i)
      i++; 
      setTimeout(forloop, 0);
    }
  }

  forloop();
})();

【问题讨论】:

  • 什么不起作用?刚刚在 Firefox 开发版上测试过,没关系,它记录了所有的 i(我用 console.log 替换了你的写)。
  • 您希望代码做什么以及它在 Firefox 中做什么?
  • 在firefox中不会出现全数字,而是只显示0,然后执行停止
  • 永远不要在异步函数中使用document.write
  • document.write 似乎是由于 JavaScript 原因仍在 JavaScript 中的旧事物之一。使用清洁器console.log 可以。

标签: javascript continuation-passing


【解决方案1】:

嗯,答案是:document.write 闻起来很臭,看起来像是被遗忘的黑暗过去的残余。
不要用那个。使用console.log,甚至附加到一些HTML,但不是document.write

这适用于所有普通浏览器:

(function(){

  var i = 0;
  function forloop(){
    if(i<10){
      console.log(i);
      i++; 
      setTimeout(forloop, 0);
    }
  }

  forloop();
})();

【讨论】:

    猜你喜欢
    • 2011-09-20
    • 2021-07-24
    • 2019-09-28
    • 1970-01-01
    • 2014-09-26
    • 1970-01-01
    • 2019-07-09
    • 1970-01-01
    • 2015-08-13
    相关资源
    最近更新 更多