js中的with:
with的語法結構為:
with(object) {
/* 語句 */
}
with主要是用來對對象取值的, 如下 所示:
with(obj) {
var newa = a;
var newb = b;
console.log(newa+newb);
}
該語句 等價於:
var newa = obj.a;
var newb = obj.b;
console.log(newa+newb);
with的 優點:
當with傳入的值非常復雜時,即當object為非常復雜的嵌套結構時,with就使得代碼顯得非常簡潔。
with的缺點:
js的編譯器會檢測with塊中的變量是否屬於with傳入的對象, 上述例子為例,js會檢測a和b是否屬於obj對象,這樣就會的導致with語句的執行速度大大下降,性能比較差。
以下方法可以同時兼顧代碼簡潔以及執行速度:
var obj = company.department.group;
var newa = obj.a;
var newb = obj.b;
console.log(newa+newb);