函数的作用域和this机制

无论函数是在哪里调用,也无论函数是如何调用的,其确定的词法作用域永远都是在函数被声明的时候确定下来的(聊一下JS中的作用域scope和闭包closure

http://www.cnblogs.com/front-Thinking/p/4317020.html)

this的指向:函数在哪里调用才决定了this到底引用的是啥

(JS中的this机制http://www.cnblogs.com/front-Thinking/p/4364337.html)

立即执行函数,调用者为window,所以this指向window


    (obj.inner.print=function(){
        console.log(this);
    })();                             //this指向window, 并不指向obj.inner

    obj.inner.print();         //this指向  obj.inner
    (obj.inner.print)();       //与上行代码等价   this指向  obj.inner

setTimeout中的this

    http://www.cnblogs.com/hutaoer/p/3423782.html

一、setTimeout中的延迟执行代码中的this永远都指向window

二、setTimeout(this.method, time)这种形式中的this,即上文中提到的第一个this,是根据上下文来判断的,默认为全局作用域,但不一定总是处于全局下,具体问题具体分析。

三、setTimeout(匿名函数, time)这种形式下,匿名函数中的变量也需要根据上下文来判断,具体问题具体分析。
原文地址:https://www.cnblogs.com/sakura-sakura/p/6836747.html