为了账号安全,请及时绑定邮箱和手机立即绑定

setTimeout的问题

setTimeout("openWeb()",1000);

function openWeb(){

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

和 

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

的区别是什么啊? 

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

正在回答

5 回答

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

0 回复 有任何疑惑可以回复我~
#1

不浪漫

你的第二种写法错误,第一个参数根本不是个函数。被得到了错误的解析:你命令了window直接打开指定的主页。
2017-02-16 回复 有任何疑惑可以回复我~
#2

丨浅笑 提问者

'http://www.baidu.com' 这个为什么要单引号啊。js里单引号双引号的区别是什么啊。 我刚试了一下 setTimeout("window.open('http://www.baidu.com')}", 3000); 这样写也可以。
2017-02-16 回复 有任何疑惑可以回复我~
#3

不浪漫 回复 丨浅笑 提问者

http://blog.csdn.net/lihchweb/article/details/53400386 这是我的博客你看下。单双引号都可以。但是涉及到嵌套的时候就不行了。
2017-02-16 回复 有任何疑惑可以回复我~
#4

丨浅笑 提问者

非常感谢!
2017-02-16 回复 有任何疑惑可以回复我~
查看1条回复

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

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


0 回复 有任何疑惑可以回复我~
#1

不浪漫

打错了 多了点什么。
2017-02-16 回复 有任何疑惑可以回复我~
#2

丨浅笑 提问者 回复 不浪漫

看不出来啊。多了什么?
2017-02-16 回复 有任何疑惑可以回复我~
#3

丨浅笑 提问者 回复 不浪漫

哦,多了个大括号,复制你的代码,忘记删后面的了,哈哈
2017-02-16 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~
#1

丨浅笑 提问者

我知道会立即执行啊,我问的是为什么啊T T
2017-02-16 回复 有任何疑惑可以回复我~

一般用第一种方法

0 回复 有任何疑惑可以回复我~
#1

丨浅笑 提问者

是说第二种写法是错的?
2017-02-16 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
JavaScript进阶篇
  • 参与学习       469258    人
  • 解答问题       22584    个

本课程从如何插入JS代码开始,带您进入网页动态交互世界

进入课程

setTimeout的问题

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号