setTimeout里面函数有无双引号的区别
双引号中的作用域不捕捉局部变量,不用双引号包着的是捕捉局部作用域
var a = function(){ alert(1111) } function abc(){ var a= function (){ alert(2222) } setTimeout("a()",3000)//111 setTimeout(a,3000)//222 } abc();
想用双引号的写法,就要把函数放在全局环境中。
当然还可以用匿名函数的写法
setTimeout(function(){alert(2222)},3000)//222
如果是没有双引号的,又写了括号
var a = function(){ alert(2222) } //这样导致直接执行并且只指向一次 setTimeout(a(),3000)