文章标题

来源:互联网 发布:sql基础教程 编辑:程序博客网 时间:2024/06/05 07:36

1、作用域+this+预解释

var num = 20;  // 假设此全局num为num1,var obj={    num:30,   // 假设此对象num为num2,    fn:(function(num){        this.num *=3;   // 此num为自执行函数this=window的num        num += 15;      // 此num为传入的全局num=20        var num = 45;   // 此num在函数预解释阶段不再声明,即为传入的形参num        return function(){            this.num *=4;    // 该匿名函数的this为调用对象            num += 20;       // 该num 为自执行函数中的形参num            console.log(num); // 该num同上        }    })(num)      // 该num传入的是全局num=20;如要传入对象内部num需改为obj.num};var fn= obj.fn; // 自执行函数执行,全局num1变为20*3=60,形参num变为45;fn();   // this.num即为全局num1,此时全局num1变为60*4=240,打印出的num=45+20=65obj.fn(); // 上一步中已经使得形参num变为65,此次输出为65+20=85.