美文网首页
js作用域特殊例子

js作用域特殊例子

作者: halapro_liu | 来源:发表于2019-06-02 17:45 被阅读0次
    var length = 10
    function fn () {
        console.log(this.length)
    }
    
    var obj = {
        length: 5,
        method: function (fn) {
            fn()
            arguments[0]()
        }
    }
    
    obj.method(fn, 1)
    // 10
    // 2
    

    首先fn(),由于js的this指向取决于调用方法的作用域,因此,fn的this指向为全局作用域,在浏览器端为window,在node端则为global。

    至于arguments0中,arguments 是一个对应于传递给函数的参数的类数组对象。其中arguments[0]为函数的第一个参数,即fn,因此fn中的this指向arguments。
    因此,this.length === arguments.length,即参数个数,为2。

    相关文章

      网友评论

          本文标题:js作用域特殊例子

          本文链接:https://www.haomeiwen.com/subject/vuglvqtx.html