var b=20 function sum(){ b=8 //全局变量重新赋值 return console.log(b); }; sum(); console.log(b);
1.当函数中b 没有加var, b就为全局变量重新赋值,sum()调用函数,由于函数中b没有加var 所以为全局变量,b=8 重新赋值,所以当sum调用函数,b=8在当前作用域中有b的声明变量 sum();// 8 console.log(b) 打印全局变量 ,而全局变量被重新赋值,也为8
var b=20 function sum(){ var b=8 //局部变量 return console.log(b); }; sum(); console.log(b);
2.console.log(b) 输出的为全局变量 ,所以输出20
sum();调用函数 函数内的b为局部变量 var 的声明只能在当前作用域下访问