js全局变量和局部变量

JS中声明全局变量主要分为显式声明或者隐式声明
 
声明方式一:
使用var(关键字)+变量名(标识符)的方式在function外部声明,即为全局变量,否则在function声明的是局部变量
声明方式二:
没有使用var,直接给标识符test赋值,这样会隐式的声明了全局变量test。即使该语句是在一个function内,当该function被执行后test变成了全局变量。
声明方式三:
使用window全局对象来声明,全局对象的属性对应也是全局变量
全局变量的优点:
可以减少变量的个数,减少由于实际参数和形式参数的数据传递带来的时间消耗。
缺点:
1 占用较多的内存单元
2 破坏了函数的封装性能 使函数对全局变量产生依赖
3 降低代码可读性
注意事项:
 一、Javascript的变量的scope(范围)是根据方法块来划分的(也就是说以function的一对大括号{ }来划分)切记,是function块,而for、while、if块并不是作用域的划分标准
 
二、Javascript在执行前会先对整个脚本文件的声明部分做完整分析(包括局部变量),从而确定实变量的作用域
 
  三,当全局变量跟局部变量重名时,局部变量的scope会覆盖掉全局变量的scope,当离开局部变量的scope后,又重回到全局变量的scope
 
var a = 10;
function test() {
console.log(a); //undefined 只声明 未赋值
a = 100;
console.log(a); //100
console.log(this.a); //10
var a;
console.log(a); //100
 
}
test();

猜你喜欢

转载自www.cnblogs.com/bjyx/p/11968718.html
今日推荐