with(Math) { alert(E); // 得到结果就是Math.E的结果 } // 如果在外部使用 alert(E); // 不是Math中的E // 根据 https://developer.mozilla.org/En/Core_JavaScript_1.5_Reference:Statements:with 中的解释 with(arg) { statement } // arg在执行参数体的时候js通过with将arg加入大括号的作用域链中,让statement可以访问到arg,如上边的例子这样如果用户访问Math中的属性和方法的时候就可以直接写方法和属性名,就像window的全局属性和方法一样直接使用,省略前边的对象 // 一段伪代码 eg: var obj = {E : "hello"}; with(Math) { alert(E); with(obj) { alert(E); } } // 如果with嵌套使用就是按照作用域的顺序