with() {}

使用 with 会影响程序的语义。因为 with 的目标对象可能会含有和局部变量冲突的属性,使你程序的语义发生很大的变化。例如:

with (foo) {
    var x = 3;
    return x;
}

局部变量 x 可能会被 foo 的一个属性覆盖,它甚至可能有setter方法,在此情况下将其赋值为3可能会执行很多其他代码。所以此例子什么可能都有,所以不要使用 with。