使用 with 会影响程序的语义。因为 with 的目标对象可能会含有和局部变量冲突的属性,使你程序的语义发生很大的变化。例如:
with (foo) { var x = 3; return x; }
局部变量 x 可能会被 foo 的一个属性覆盖,它甚至可能有setter方法,在此情况下将其赋值为3可能会执行很多其他代码。所以此例子什么可能都有,所以不要使用 with。