《JavaScript高级程序设计》读书笔记

第三章

with语句

with语句的作用就是将代码的作用域设置到一个特定的对象中。
定义with语句的主要目的主要是为了简化多次编写同一个对象的工作,如👇所示:

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

以上几行代码都涉及到对location对象的操作,如果使用with语句,可以把上面的代码改成如下所示:

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

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

__ 严格模式下不允许使用with语句,否则将被视为语法错误🙅(大量的使用with语句会导致性能下降,也会给调试代码造成困难) __