在掘金学习有一段时间了,今天写第一次写文章,文采不好,大家见谅,大家互相学习,有不足的地方,欢迎指出。
不用双引号包着的是捕捉局部作用域的,带括号的是全局
var a = function(){ alert(1111)} function abc(){ var a= function () { alert(2222) } setTimeout("a()",3000)//111 setTimeout(a,3000)//222}abc()复制代码
当回调不带""号的时候,如果带括号,则同步没有延迟,如果没有括号则异步延迟,可以利用bind改变this指向
var sayHello = function(){ console.log(111)};var myName = 444foo = function(){ this.myName = 'Foo function';}foo.prototype.sayHello = function(){ console.log(this.myName);}foo.prototype.bar = function(){ // setTimeout('this.sayHello()', 0) //333 111 // setTimeout(this.sayHello(), 2000) //Foo function 333 // setTimeout(this.sayHello, 2000) //333 444 // setTimeout(this.sayHello.apply(this), 1000) //Foo function 333 setTimeout(this.sayHello.bind(this), 1000) // 333 Foo function console.log(333)}var f = new foo();f.bar();复制代码