为什么setTimeout放在一个函数外面不会被触发?

时间:2016-01-30 13:43:28

标签: javascript

见这两个例子

<Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView1"
        android:layout_alignRight="@+id/editText1"
        android:layout_below="@+id/progressBar1"
        android:layout_marginTop="24dp"
        android:text="Submit"
        android:onClick="showZiare"/>

其他例子

android:onClick="****"

在示例1中,当我们加载页面时,<head> <script language="JavaScript" type="text/javascript"> var mTimer=setTimeout(foo();1000); </script> </head> 不会运行

在示例2中,当我们点击按钮触发<head> <script language="JavaScript" type="text/javascript"> var mTimer; function test(){ mTimer=setTimeout(foo();1000);} </script> </head> 时,此时mTimer=setTimeout(foo();1000);开始运行。

加载页面时,为什么test();在函数外部不会被触发?

1 个答案:

答案 0 :(得分:1)

setTimeout绝对可以在函数之外使用。

除非foo是一个返回另一个函数的函数,否则很可能是

// do this
var mTimer = setTimeout(foo, 1000);

而不是

// don't do this
var mTimer = setTimeout(foo(), 1000);

区别在于第一个代码,对foo函数的引用传递给setTimeout,而在第二个代码中,{{1>}的返回值传递给foo()

运行此代码段以查看其是否有效

setTimeout