摘要:nodejs和浏览器环境中var和不带var的区别

nodejs中:带var表示当前模块的顶层作用域的属性,不带var表示global对象中的属性。
例一:


//必须在nodejs环境下运行
a="global";//相当于 global.a="global"
console.log(a);
function alpha() {
    console.log(this.a);//这里的this表示global对象,会打印出global对象中的a属性
}
alpha();
console.log(a);

运行结果:
global
global
global

例二:


//必须在nodejs环境下运行
var a="module";//在顶层作用域里面定义一个a属性
console.log(a);
function alpha() {
    console.log(this.a);//这里的this表示global对象,会打印出global对象中的a属性
}
alpha();
console.log(a);

运行结果:

module
undefined
module

浏览器环境下:带var或者不带var都表示window对象的属性,没有什么区别,而windows对象又指向global对象。浏览器中global对象不能直接访问,window对象是global对象的具体化表现。


//必须在浏览器环境下运行
a="global";//相当于 window.a="global"
console.log(a);
function alpha() {
    console.log(this.a);//这里的this表示window对象,会打印出window对象中的a属性
}
alpha();
console.log(a);//这里的a表示window对象中的a属性

运行结果:

global
global
global