对于Js 估计大家都很熟悉了, 也是在今天早上看到一篇文章后, 才对全局变量和局部变量有了新的认识。
var glVar = 1;
function main() {
console.info(glVar);
var glVar = 2;
console.info(this.glVar);
}
对于main 和 var p = new main(); 会输出什么?
答案:undefined, 1; undefined, undefined;
第一个undefined glvar 为undefined! 这个glvar 并不是全局变量,这是因为在function main 里已经声明了(函数体数第3行)一个重名的局部变量, js 在初始化的时候,是先把变量提前定义 在进行赋值 ; 例如:
function testVar() {
console.info(a);
a = 4;
var a;
console.info(a);
}
输出的则是 undefined, 4;
第二个this 表示windows, 其实全局变量也就是windows.glVar 所以不会有太大异议;
第三个 同第一个;
第四个:此事的this 代表的是main 而不是windows 所以也是undefined;
如有解释不到位之处,烦请各位大牛给予详解,谢谢了。