with语句:可以形成自己的作用域(with已不建议使用,严格模式下with语句会报错),with语句可能是混淆错误和兼容性问题的根源 var message= "message" function foo(){ function bar(){ //with的大括号形成作用域 打印message会先去with传入的参数找message,没有的话再去上层找 with(obj){ console.log(message) } } } foo() var info={name:'xiaoming'} with(info){ console.log(name) }