事情起因是因为看到了这段代码
var n=1,m=2;
function fn(){
var n=3
m=4
console.log(n);
console.log(m);
}
fn();
console.log(n);
console.log(m);
/*********************************************/
本身在作用域方面搞得就有点蒙,自己算出来的结果是3,2,1,2;但是打印出来的是3,4,1,4;
自己是蒙在了函数里面如果不用var 那么这个声明应该就不存在;需要去上一级链上去找,结果忘记了函数里面不用var 声明是全局变量;而用var 声明的是局部变量,只能在函数内部使用。
如果打印顺序换换
fn();
console.log(n);
console.log(m);
这样的代码换成:
console.log(n);
console.log(m);
fn();
那么打印出来的就是1,2,3,4
原文:http://www.cnblogs.com/xunshanxiaoyao/p/5256197.html