在掘金学习有一段时间了,今天写第一次写文章,文采不好,大家见谅,大家互相学习,有不足的地方,欢迎指出。
不用双引号包着的是捕捉局部作用域的,带括号的是全局
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 = 444
foo = 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();