Effective JavaScript Variable Scope Item 8-9 Globals and Locals

本系列作为Effective JavaScript的读书笔记。

 

Item 8:少用全局对象

 

重点:

  1. 全局对象能够带来便利,但是有经验的程序员都会视图避免它。因为它会带来潜在的命名冲突的风险
  2. 全局变量是维系不同模块之间的纽带,模块之间只能通过全局变量来访问对方提供的功能
  3. 能使用局部变量的时候,绝不要使用全局变量
  4. browser中,this关键字会指向全局的window对象
  5. 两种用来改变全局对象的方式,通过var关键字声明以及给全局对象设置属性(通过this关键字)
  6. 通过全局对象进行针对当前运行环境的特性检测(Feature Detection),比如在ES5中提供了一个JSON对象用来操作JSON数据,那么可以通过if(this.JSON)来判断当前运行环境是否支持JSON

 

总结:

  1. 避免声明全局变量
  2. 尽量使用局部变量
  3. 避免向全局对象中添加属性
  4. 利用全局变量来进行特性检测

 

Item 9:总是声明局部变量

 

重点:

  1. 隐式声明的全局变量比全局变量更加麻烦。比如:

function swap(a, i, j) {
    temp= a[i]; // global
    a[i]= a[j];
    a[j]= temp;
}

上述的temp就会被隐式地声明成一个全局变量。

  1. 使用lint工具来检测JavaScript代码中是否有隐式声明的全局变量

 

总结:

  1. 总是记得通过var关键字来声明局部变量
  2. 使用lint工具来确保没有隐式声明的全局变量

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值