with语句
with语句的用途是将代码作用于设置为特定的对象,其语法是:
with (expression) statement
使用with语句的主要场景是针对一个对象反复操作,这时候将代码作用域设置为该对象能提供便利,如下示例:
let qs = location.search.substring(1);
let hostName = location.hostname;
let url = location.href;
console.log('normal:',qs,hostName,url);
上面代码中每一行都用到了location对象。如果使用with语句,就可以简化如下:
with(location){
let qs = search.substring(1);
let hostName = hostname;
let url = href;
console.log('with:',qs,hostName,url);
}
对比结果相同。这里,with语句用于连接location对象。意味着在这个语句内部,每个变量首先被认为是一个局部变量。如果没有找到该局部变量,则会搜索location对象,看它是否有一个同名的属性。如果有,则该变量会被赋值为location对象的相应属性。
let custObj = {
name:'张三',
age:18
}
let name = custObj.name;
let age = custObj.age;
console.log('normal:',name,age);
with(custObj){
// let name = '李四';
// let age = 8;
console.log('with:',name,age);
}
注:严格模式不允许使用with语句,否则会抛出错误。由于with语句影响性能且难于调试其中的代码,通常不推荐在产品代码中使用with语句。