Skip to content
陈广亮的技术博客
Go back

JS with 关键字的坑

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 泄漏到全局!

with 在当前位置建立一个新的词法作用域,不会在目标对象中新建属性。严格模式下完全不起作用,不建议使用。


Share this post on:

Previous Post
MySQL 更换 SQLite 记录
Next Post
JS 具名函数与匿名函数的差异