lyuehh
12/27/2013 - 2:11 AM

undefined.js

var foo = 1;
function main(){
    alert(foo);
    var foo = 2;
    alert(this.foo);
    this.foo = 3;
}
var m1 = main();   //undefined  1
var m2 = new main();  // undefined undefined 

var m1 = main(); 
//相当于是:

var foo = 1;
function main(){
    var foo;
    alert(foo); // 这里foo就是上一行的foo, 所以是undefined
    var foo = 2;
    alert(this.foo); // 这里的this 是window, 所以结果就是window.foo, 就是上面的1
    this.foo = 3; // 这里的this还是window, 结果是修改了window.foo
}


var m2 = new main();
//相当于是:

var foo = 1;
function main(){
    // 通过 new main()调用时, 内部的this会指向新创建的对象, 默认是空对象
    alert(foo); // 这里的foo相当于是this.foo, 是undefined
    var foo = 2; // 这是个局部变量, 如果是 this.foo = 2, 那么下面一行就是2了
    alert(this.foo); // this是空对象, 还是undefined
    this.foo = 3; // 这里给this.foo赋值, this = {foo: 3};
}