with关键字

with在JS中通常被当做重复引用同一个对象多个属性的快捷方式。

var obj = {
a: 1,
b: 2,
c: 3
};
// 重复引用obj进行属性赋值
obj.a = 3;
obj.b = 4;
obj.c = 5; // 等价于以下代码
with (obj) {
a = 3;
b = 4;
c = 5;
}

但会有奇怪的副作用,比如:

function foo (obj){
with (obj) {
a: 2;
}
}; var o1 = { a: 3 };
var o2 = { b: 3 }; foo(o1);
console.log(o1.a); // 2 foo(o2);
console.log(o2.a); // undefined
console.log(a); // 2,a可以从全局访问到!变量泄漏!

你可以想一下为什么会造成变量泄漏

严格模式下,eval和with都是禁止的,因此不要使用。

最新文章

  1. iOS学习笔记——使用ChildViewController
  2. 微软自带的Serialization和Newtonsoft简单测试
  3. [转]STL中vector转数组(实际是数组的指针)
  4. codeigniter在nginx 下支持pathinfo和去除index.php的方法
  5. jps用法
  6. Mysql配置调优(转自阿铭论坛)
  7. Webbrowser加载Flash后方向键失效问题(用到了OLE接口,没有被处理就转发,够复杂的)
  8. 通过DeviceIoControl读磁盘的方式读取独占文件内容
  9. c/c++ linux 进程间通信系列6,使用消息队列(message queue)
  10. AVPass技术分析:银行劫持类病毒鼻祖BankBot再度来袭,如何绕过谷歌play的杀毒引擎?
  11. Codeforces 420D Cup Trick 平衡树
  12. js页面停留时间
  13. leetcode-[3]Max Points on a Line
  14. MySQL(五)之DDL(数据定义语言)与六大约束
  15. Python 访问set
  16. php比较函数,判断安全函数
  17. Django模型与创建管理员用户
  18. SQL-修改: 将日期修改为空NULL、修改为空的记录
  19. Unity3d Attribute 总结
  20. 单周期CPU设计

热门文章

  1. MySql入门知识(一)
  2. 文件批量生成IO流读写
  3. 执行超大的.sql文件处理,100M++
  4. Java生鲜电商平台-SpringCloud分布式请求跟踪系统设计与实践
  5. js-事件函数调用简化
  6. OC-AVAudioPlayer的使用小记
  7. Andorid Studio 新建模拟器无法联网问题
  8. QT解决中文乱码
  9. [20191108]内核参数tcp_keepalive与sqlnet.ora expire_time的一些总结.txt
  10. 扩展KMP笔记