在写定时器时很容易搞混,所以记下防止忘记。
双引号中的作用域不捕捉局部变量,不用双引号包着的是捕捉局部作用域
1 var a = function() 2 { 3 alert(1111) 4 } 5 function abc() 6 { 7 var a= function () 8 { 9 alert(2222) 10 } 11 setTimeout("a()",3000)//111 12 setTimeout(a,3000)//222 13 } 14 abc()
想用双引号的写法,就要把函数放在全局环境中。
当然还可以用匿名函数的写法
1 setTimeout(function(){alert(2222)},3000)//222
如果是没有双引号的,又写了括号
1 var a= function () 2 { 3 alert(2222) 4 } 5 //这样导致直接执行并且只指向一次 6 setTimeout(a(),3000)