with语句

with语句

  • 作用: 将代码的作用域设置到一个特定的对象中
  • 语法:with(expression) statement;

使用with语句的目的主要是简化多次编写同一个对象的工作,

例如

1
2
3
var qs = location.search.substring(1);
var hostname = location.hostname;
var url = location.href;

上面代码都包含location对象。如果使用with语句可以改写如下

1
2
3
4
5
with(location){
var qs = search.substring(1);
var hostname = hostname;
var url = href;
}

在这个重写的例子中,使用with语句关联了location对象,意味着在with语句的代码快内部。每个变量首先会被认为是一个局部变量,而如果在局部环境中找不到该变量的定义,就会查找location对象中是否有同名的属性。如果发现了同名属性,则以location对象属性的值作为变量的值。

严格模式下不允许使用with语句,否则将视为语法错误

由于大量使用with语句会导致性能下降,同时也会给代码调试造成困难,因为在开发大型应用程序中,不建议使用with语句。