最近遇到了一个关于var变量很简单的问题,废话不多说,直接看问题:
var global = 'hello';
function test(){
console.log(global);
var global = 'world';
console.log(global);
}
两次打印,第一次undefined,第二次是world,笔者一直以为两次应该是hello和world,很是困扰。
如果把后面两行去掉:
var global = 'hello';
function test(){
console.log(global);
}
这样子打印出来就是hello,那肯定是和后定义的变量有关系了。
果然,在网上查了一下,第二个var变量作用于整个function,个人理解也就是相当于:
var global = 'hello';
function test(){
var global;
console.log(global);
global = 'world';
console.log(global);
}
那要是函数内有相同变量就不可以访问全局变量了吗,答案当然是否定的
在函数内可以通过window.global调用全局变量,
另外function内的this也是指向window实例,也可以吧引用写成this.global
当然最好还是尽量避免同名变量的出现,减少出错的概率。
var global = 'hello';
function test(){
console.log(global);
var global = 'world';
console.log(global);
}
两次打印,第一次undefined,第二次是world,笔者一直以为两次应该是hello和world,很是困扰。
如果把后面两行去掉:
var global = 'hello';
function test(){
console.log(global);
}
这样子打印出来就是hello,那肯定是和后定义的变量有关系了。
果然,在网上查了一下,第二个var变量作用于整个function,个人理解也就是相当于:
var global = 'hello';
function test(){
var global;
console.log(global);
global = 'world';
console.log(global);
}
那要是函数内有相同变量就不可以访问全局变量了吗,答案当然是否定的
在函数内可以通过window.global调用全局变量,
另外function内的this也是指向window实例,也可以吧引用写成this.global
当然最好还是尽量避免同名变量的出现,减少出错的概率。