84669 Lernen von Personen
152542 Lernen von Personen
20005 Lernen von Personen
5487 Lernen von Personen
7821 Lernen von Personen
359900 Lernen von Personen
3350 Lernen von Personen
180660 Lernen von Personen
48569 Lernen von Personen
18603 Lernen von Personen
40936 Lernen von Personen
1549 Lernen von Personen
1183 Lernen von Personen
32909 Lernen von Personen
var momement = setTimeout(function(){document.write(222222222222);},1000)//事实上用控制台调试的话他会执行,而不是所谓的我想当然以为是保存一个值而没有执行它。
业精于勤,荒于嬉;行成于思,毁于随。
确实会调用,你写了1000毫秒。1秒钟之后会被调用,这个语句是正确的。setTimeout返回的值是一个句柄,可以用来取消这个setTimeout.
clearTimeout(momement)
难道你是想这样:
//定义 var momement = function(){ setTimeout(function(){document.write(222222222222);},1000)} //调用: momement() // 222222222222
你这样做相当于调用setTimeout这个方法,然后把这个方法的返回值给变量momement,当然是会执行这个方法的呀。
setTimeout
momement
楼主可能是想把一个引用传给momement,你可以这样做:
function setTimeoutWrapper(){ setTimeout(function(){ document.write(222222222222); },1000) } var momement = setTimeoutWraper;
这样的话,你就可以通过momement()再调用这个方法啦
momement()
为什么不执行,你这样就等于是1000MS后调用了function呢,它返回了一个timeoutID给变量了,可以通过clearTimeout(“momement”)来取消这个Timeout,传入的参数就是之前返回的timeoutID
这是函数调用啊,当然执行,如果你想保存为对象的话
var momement = function() { setTimeout(function(){document.write(222222222222);},1000); };
下面的才执行。
setTimeout执行会返回一个数字,这个数字代表了该延迟定时器的唯一身份。因此,我们在调用setTimeout和setInterval的时候,常常会定义一个变量来保存这个数字。
var timer = setInterval(fn, 2000);
于是,有了这个标识着他身份的数字,我们想要停止该定时器的时候就很方便了
clearInterval(timer);
因此当你想给setTimeout/setInterval保存起来不执行的话,通过这种方式是没办法做到的。[应该也做不到],因此我们通常就是在需要使用定时器的时候,定义它,在不需要的时候,清除他,通过上面的方式就很容易实现。
没有太多为什么
因为解释器发现函数名后面带()就会直接调用该函数
不管你是什么setTimeout还是什么alert
alert
(function(){ return alert(2) })(); var i = alert(3)
好吧,我看到大家对于这个回答都不标准,只说中了那么一点。我在这里补充一个匿名函数的知识,请参考我以前的回答:js的回调函数一般都用来做什么
哦,对了,应该是回答为什么把setTimeout赋值给一个变量会执行
var timeout = setTimeout(function() {alert('good');},10000);
在这里,告诉程序10s钟之后执行function() {alert('good'); },在这里setTimeout会产生一个句柄赋值给timeout假设我们突然在10s钟之内不想执行了,我们可以
clearTimeout(timeout); //根据句柄清除setTimeout,这样就不会执行了。
对了,我这里给一个例子:var t1 = setTimeout(function() {
alert('我这里是10s后执行的程序');
},10000);setTimeout(function() {
clearTimeout(t1); alert('我这个是5s后执行的程序,我这里清除了10s后执行的程序');
},5000);
执行。
函数名加括号这种形式只要前面没有function关键字就立即执行。
setInterval也是一样。
var iTime =setInterval(.....)
这样,只不过函数的返回值赋给了变量罢了。
这个问题没必要说那么多。
首先你要明白setTimeout是一个函数,在函数后面加一个括号叫做函数调用表达式,就代表调用这个函数。而调用setTimeout这个函数的结果就是若干时间后打印那些东西。
你把setTimeout(…)赋值给另一个变量,只是把函数调用的结果(即返回值)给了那个变量,setTimeout函数的返回值是一个整数。
setTimeout(…)
最后我再纠正题主问题标题里的一个错误吧:那不叫把setTimeout语句赋给变量,你可以说表达式。语句是没有值的,也没法赋值给别人。
首先,setTimeout是一个函数,后面加了一个括号,执行这个函数,之行结束后,返回的值赋给变量
确实会调用,你写了1000毫秒。1秒钟之后会被调用,这个语句是正确的。
setTimeout返回的值是一个句柄,可以用来取消这个setTimeout.
难道你是想这样:
你这样做相当于调用
setTimeout
这个方法,然后把这个方法的返回值给变量momement
,当然是会执行这个方法的呀。楼主可能是想把一个引用传给
momement
,你可以这样做:这样的话,你就可以通过
momement()
再调用这个方法啦为什么不执行,你这样就等于是1000MS后调用了function呢,它返回了一个timeoutID给变量了,可以通过clearTimeout(“momement”)来取消这个Timeout,传入的参数就是之前返回的timeoutID
这是函数调用啊,当然执行,如果你想保存为对象的话
下面的才执行。
setTimeout执行会返回一个数字,这个数字代表了该延迟定时器的唯一身份。
因此,我们在调用setTimeout和setInterval的时候,常常会定义一个变量来保存这个数字。
于是,有了这个标识着他身份的数字,我们想要停止该定时器的时候就很方便了
因此当你想给setTimeout/setInterval保存起来不执行的话,通过这种方式是没办法做到的。[应该也做不到],因此我们通常就是在需要使用定时器的时候,定义它,在不需要的时候,清除他,通过上面的方式就很容易实现。
没有太多为什么
因为解释器发现函数名后面带()就会直接调用该函数
不管你是什么
setTimeout
还是什么alert
好吧,我看到大家对于这个回答都不标准,只说中了那么一点。
我在这里补充一个匿名函数的知识,
请参考我以前的回答:js的回调函数一般都用来做什么
哦,对了,应该是回答为什么把setTimeout赋值给一个变量会执行
在这里,告诉程序10s钟之后执行function() {alert('good'); },在这里setTimeout会产生一个句柄赋值给timeout
假设我们突然在10s钟之内不想执行了,
我们可以
对了,我这里给一个例子:
var t1 = setTimeout(function() {
},10000);
setTimeout(function() {
},5000);
执行。
函数名加括号这种形式只要前面没有function关键字就立即执行。
setInterval也是一样。
这样,只不过函数的返回值赋给了变量罢了。
这个问题没必要说那么多。
首先你要明白
setTimeout
是一个函数,在函数后面加一个括号叫做函数调用表达式,就代表调用这个函数。而调用setTimeout
这个函数的结果就是若干时间后打印那些东西。你把
setTimeout(…)
赋值给另一个变量,只是把函数调用的结果(即返回值)给了那个变量,setTimeout
函数的返回值是一个整数。最后我再纠正题主问题标题里的一个错误吧:那不叫把setTimeout语句赋给变量,你可以说表达式。语句是没有值的,也没法赋值给别人。
首先,setTimeout是一个函数,后面加了一个括号,执行这个函数,之行结束后,返回的值赋给变量