var a=1;
a=2;
var a=3;
function add(a){
var a=4;
a=5;
var a=6;
console.log(a);
}
add(a);//6
console.log(a);//3
函数的值传递只与最后定义的值有关,与全局变量,全文变量无关。
function add(){
a=5;
}
console.log(a);//ReferenceError: a is not defined
全局变量无法突破函数内的范围,除非通过函数调用和return。
var a=[2];
2 function add(){
3 console.log(a);
4 }
5 add();//[2]
6 a=[1];
7 add();//[1]
8 console.log(a);//[1]
练习题
var bb = 1;
function aa(bb) {
bb = 2;
console.log(bb);
};
aa(bb);//2
console.log(bb);//1
~
(注意:之所以在外面无法访问到函数内的全局变量,是由于JS没有块级作用域所致,是本身的缺陷,之后es6通过其他符号定义变量进行弥补)