<script>
//作用域
//全局变量
// var a=3;
// function getNum(){
// //函数中定义变量外部是不能够获取的
// //局部变量只能在函数内调用
// //var b = 4;
// //函数内可以调用全局变量
// //当函数执行完后,局部变量将被销毁
// }
//getNum();
//当大量使用全局变量时,变量自身是会被数量过多命名相同而污染,以至于丢失部分需要变量
//当使用全局变量,就增加了代码的耦合度(在不同的函数中降低使用同一个变量)
//当大量使用全局变量,会造成内存占有过多(局部变量会自动销毁,全局变量不会)
// var a= 3;//报错 因为定义a=3意味着将内存中存储的函数替换为3
// function a(){
// console.log(a);
// }
// a();
// var a ;//仅仅定义了变量,没有覆盖内存中存储的函数,a仍然是函数
// function a(){
// console.log(a);//a就是当前函数,会把这个函数打印出来
// }
// a();
// var a = 3;//报错
// function a(){
// console.log(a);
// }
// a();
// var a = 3;
// a = function(){
// console.log(a);//打印当前函数
// }
// a();
//括号内的内容叫做参数(形参) 相当于局部变量
// function a(a){
// console.log(a);//优先局部变量
// }
// a(3);
// var b = 3
// function a(){
// var b = 5;
// console.log(b);//局部变量优先
// }
// a();
// var b = 3;
// function a(){
// console.log(b);//变量提升,相当于先var a,console.log之后 又 b = 5,所以最后是undefined
// var b = 5;
// }
// a();
// var b = 3;
// function a(){
// console.log(b);//局部的b未声明,所以访问全局
// b = 5;
// }
// a();
// var b = 3;
// function a(b){
// console.log(b);//5 输出带入的参数
// var b = 10;
// console.log(b);//10 优先访问最近的变量
// }
// a(5);
// function b(){
// console.log(b);//参数没有使用var声明,内部的函数优先覆盖了参数
// function b(){
// }
// }
// b(100);
// function b(){
// console.log(b);//输出undefined 因为函数也有变量提升 相当于先var a,console.log之后 又 function,所以最后是undefined
// var b=function b(){
// }
// }
// b(100);
// function b(){
// var b = 3;
// console.log(b);//3 因为使用了var定义局部变量,所以覆盖了内部的函数
// function b(){
// }
// }
// b();
</script>