在JavaScript中,with语句允许扩展特定对象的作用域链,并允许在with语句块访问该对象的成员,就像这些成员的局部成员一样。
语法如下:
with(object)
statement
例如,可以用如下方式使用with语句修改文档样式的某些属性
//使用with语句简化包含了重复对象名的对象
with(document.body.style){
backgroundColor = "red";
fontSize="30px";
fontFamily="Courier,monospace";
}
上述代码等效下面形式的代码
document.body.style.backgroudColor="red";
document.body.style.fontSize="30px";
document.body.style.fontFamily="Courier,monospace";
with语句看似方便,但是遇到一下原因,应该避免使用with语句
- 原作用域链的查找方式已经被“重新路由”。
- 使用with语句容易地编写代码,如果阅读代码复杂with语句就会变的难以阅读。
- js的解释器需要检查with块中的变量是否属于with包含的对象,这将使with语句执行速度大大下降,并且导致js语句很难被优化。
为了是代码更加清晰,可以如下方式编写代码
var dbs = document.body.style;
dbs.backgroudColor="red";
dbs.fontSize="30px";
dbs.fontFamily="Courier,monospace";