问答详情
源自:8-17 编程练习

setTimeout的问题

setTimeout("openWeb()",1000);

function openWeb(){

    window.open("http://www.baidu.com") ;

和 

 setTimeout(window.open("http://www.baidu.com"),1000);

的区别是什么啊? 

为什么前者延时1秒跳转,而后者直接就跳转了?

提问者:丨浅笑 2017-02-16 11:39

个回答

  • 不浪漫
    2017-02-16 17:53:38
    已采纳

    setTimeout()第一个参数是个函数。第二个参数是设置延时的时间。你的第一种方法是对的。第二种完全就错了。 setTimeout(window.open("http://www.baidu.com"),1000);这是个错误的写法。更改成这样:setTimeout(function() {window.open('http://www.baidu.com')}, 3000);这才对。

  • 不浪漫
    2017-02-16 19:22:16

    我刚试了一下
    setTimeout("window.open('http://www.baidu.com')}", 3000);
    这样写也可以。

    你这个还是有问题的。有没有发现你少了点什么


  • 南山来也
    2017-02-16 17:43:44

    setTimeout中的函数应该是指定一个已存在的函数或直接声明一个新的函数如:function(...){},你的那种写法是直接告诉解释器执行函数,这是我的理解,希望对你有用。

  • 南山来也
    2017-02-16 12:47:29

    后者的写法会立即执行函数

  • 麦稻香田
    2017-02-16 11:58:27

    一般用第一种方法